Boost logo

Boost Users :

Subject: Re: [Boost-users] Performance optimization in Boost using std::vector<>
From: Adam Romanek (romanek.adam_at_[hidden])
Date: 2015-02-23 02:25:17


On 22.02.2015 08:17, chmhou_at_[hidden] wrote:
>>Hi,
>>not sure if the OP needs std::vector but... I'd recommend
>>boost::container::vector which has a dedicated constructor [1] and
>>resize() [2] method tagged with default_init_t argument, both of which
>>default initialize the values in the vector. For primitives it basically
>>means it leaves them uninitialized, hence there's no overhead when the
>>vector is to be filled with real data soon.
>>WBR,
>>Adam Romanek
>
> Hi Adam
> As following your point, the benefit of boost::container::vector supported the "default_init_t" method so that it 's quite convince and safety comparing with std::vector<>
> is that right ? are there additional advantages ?

Not sure what convenience and safety you refer to. To me both of these
aspects are exactly the same for both containers.

The difference is that boost::container::vector with "default_init_t"
uses *default initialization* and std::vector uses *value
initialization* to initialize the data they hold. The difference has
huge impact on performance as default initialization for primitive types
is a no-op.

WBR,
Adam Romanek


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net