struct Foo{...} std::vector<Foo> vec; for( int i = 0; i < 10; ++i) { vec.push_back( Foo() ); }
Results: 35 move / 25 copy / 10 move + 15 copy / 25 move.
It all depends on your compiler and STL implementation. Not knowing scares the hell out of me.
* Compilers are introducing move as we move in C++11. If you compile your code in C++03 (or a compiler with partial C++11 support, no move).
* The standard doesn't place a strict definition on how vectors are increased in size as you push_back. Of course, if you want to control the amount of space in a vector manually, rather than let your compiler decide, you can reserve in advance.
Is your problem just with moving to C++11, or do you get different numbers (other than different numbers of moves) in a compiler with proper C++11 support (basically, the most recent version of everything).
http://en.cppreference.com/w/cpp/container/vector/emplace_ba...
vec.reserve(10);
and report back how many allocations occur.
Also what compiler did you feel comfortable picking a year ago to base a production development effort on?
And I must say: It's a whole different programming language and a new level of productivity.