X-FeedAbuse: http://nntpfeed.proxad.net/abuse.pl feeded by 88.191.16.109 Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.dougwise.org!nntpfeed.proxad.net!nospam.fr.eu.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!74.125.64.80.MISMATCH!postnews.google.com!news2.google.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!news.giganews.com.POSTED!not-for-mail NNTP-Posting-Date: Fri, 10 Jun 2011 15:32:31 -0500 From: Pete Becker Organization: Roundhouse Consulting, Ltd. Newsgroups: comp.lang.c++ Date: Fri, 10 Jun 2011 10:32:30 -1000 Message-ID: <2011061010323081406-pete@versatilecodingcom> References: <8bb2eabb-fd3f-4355-9704-d430ce964f8d@m10g2000yqd.googlegroups.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: std::set preallocate? User-Agent: Unison/2.1.4 Lines: 34 X-Usenet-Provider: http://www.giganews.com X-Trace: sv3-4Zw1161rZ/Vy0cZ7FGK5cFjinrQ0DDZGJq+MP4Eq26UyZkkIHwhPFPc42BAcE9qNuUYBBvWprK39rHR!EphD5JPpAyUwVIkfFRnu/SXJV8KXyIh69/fbOPDKv6VO9iaBWrvo0tXdRWXeqnuy+ffFcvM= X-Complaints-To: abuse@giganews.com X-DMCA-Notifications: http://www.giganews.com/info/dmca.html X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2048 Xref: x330-a1.tempe.blueboxinc.net comp.lang.c++:6585 On 2011-06-10 10:01:02 -1000, Christopher said: > Got a complaint that allocation is costly for 2000 items to be > inserted into a set one by one. I need to preallocate, and depend on > the set growing, if needed, after the number of items exceeds the > preallocation. Sets typically use a separate data block for each element, so allocating a bunch of blocks up front doesn't really accomplish anything. It's not like a vector, which uses a single data block and has to resize that block as elements are added. > > Do I do so like this? No, definitely not. > > class A > { > public: > A() > { > m_values.get_allocator.allocate(2000); This allocates a data block that can hold 2000 elements and throws away its address. -- Pete Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The Standard C++ Library Extensions: a Tutorial and Reference (www.petebecker.com/tr1book)