fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. template <typename T> void duplicate(vector <T> &v)
  7. {
  8. size_t n = v.size();
  9. v.resize(n << 1);
  10.  
  11. for (size_t q=n-1; ~q; --q)
  12. {
  13. v[(q<<1)|1] = v[q];
  14. v[q<<1] = move(v[q]); // should work for 0
  15. }
  16. }
  17.  
  18. int main(int argc, const char * argv[])
  19. {
  20. vector<int> v { 1,2,3,4,5,6,7,8,9,10 };
  21. for(auto i: v) cout << i << " "; cout << endl;
  22. duplicate(v);
  23. for(auto i: v) cout << i << " "; cout << endl;
  24. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
1  2  3  4  5  6  7  8  9  10  
1  1  2  2  3  3  4  4  5  5  6  6  7  7  8  8  9  9  10  10