>not sure if the OP needs std::vector but... I'd recommend
>boost::container::vector which has a dedicated constructor  and
>resize()  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.
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 ?
You said "Boost::mpi version is always at least 10 times slower. " make me confused, I guess it's should be a typo, isn't ?