// Example program
#include <iostream>
#include <string>
#include <vector>
#include <chrono>
using namespace std;
int main()
{
string a = "veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongstring";
vector<string> b(10,a);
vector<vector<string> > c(1000,b);
vector<string> d,e;
auto t1 = chrono::system_clock::now();
for(auto& item : c)
{
d.insert(d.end(),item.begin(),item.end());
}
cout << c[0][0].length() << endl;
auto t2 = chrono::system_clock::now();
for(auto& item:c)
{
e.insert(e.end(), std::make_move_iterator(item.begin()),std::make_move_iterator(item.end()));
}
auto t3 = chrono::system_clock::now();
cout << chrono::duration_cast<chrono::nanoseconds>(t2-t1).count() << endl;
cout << chrono::duration_cast<chrono::nanoseconds>(t3-t2).count() << endl;
cout << c[0][0].length() << endl;
cout << "To check that c has been moved from." <<endl;
}
Ly8gRXhhbXBsZSBwcm9ncmFtCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGNocm9ubz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgc3RyaW5nIGEgPSAidmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeXZlcnl2ZXJ5dmVyeWxvbmdzdHJpbmciOwogICAgdmVjdG9yPHN0cmluZz4gYigxMCxhKTsKICAgIHZlY3Rvcjx2ZWN0b3I8c3RyaW5nPiA+IGMoMTAwMCxiKTsKICAgIHZlY3RvcjxzdHJpbmc+IGQsZTsKICAgIAogICAgYXV0byB0MSA9IGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKICAgIGZvcihhdXRvJiBpdGVtIDogYykKICAgIHsKICAgICAgICBkLmluc2VydChkLmVuZCgpLGl0ZW0uYmVnaW4oKSxpdGVtLmVuZCgpKTsKICAgIH0KICAgIGNvdXQgPDwgY1swXVswXS5sZW5ndGgoKSA8PCBlbmRsOwogICAgCiAgICBhdXRvIHQyID0gY2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpOwogICAgZm9yKGF1dG8mIGl0ZW06YykKICAgIHsKICAgICAgICBlLmluc2VydChlLmVuZCgpLCBzdGQ6Om1ha2VfbW92ZV9pdGVyYXRvcihpdGVtLmJlZ2luKCkpLHN0ZDo6bWFrZV9tb3ZlX2l0ZXJhdG9yKGl0ZW0uZW5kKCkpKTsKICAgIH0KICAgIAogICAgYXV0byB0MyA9IGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsgICAgCiAgICBjb3V0IDw8IGNocm9ubzo6ZHVyYXRpb25fY2FzdDxjaHJvbm86Om5hbm9zZWNvbmRzPih0Mi10MSkuY291bnQoKSA8PCBlbmRsOwogICAgY291dCA8PCBjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8Y2hyb25vOjpuYW5vc2Vjb25kcz4odDMtdDIpLmNvdW50KCkgPDwgZW5kbDsKICAgIGNvdXQgPDwgY1swXVswXS5sZW5ndGgoKSA8PCBlbmRsOwogICAgY291dCA8PCAiVG8gY2hlY2sgdGhhdCBjIGhhcyBiZWVuIG1vdmVkIGZyb20uIiA8PGVuZGw7Cn0=