fork download
  1. #include <deque>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. struct checkpoint {
  6. checkpoint() {std::cout << "default construct\n";}
  7. checkpoint(const checkpoint& rhs) {std::cout << "copy construct\n";}
  8. checkpoint&operator=(const checkpoint& rhs) {std::cout << "copy assign\n"; return *this;}
  9. };
  10.  
  11. void push(std::deque<std::vector<checkpoint> >&cont, std::vector<checkpoint>& indata) {
  12. cont.push_back(std::vector<checkpoint>());
  13. cont.back().swap(indata);
  14. }
  15. void pop(std::deque<std::vector<checkpoint> >&cont, std::vector<checkpoint>& outdata) {
  16. cont.front().swap(outdata);
  17. cont.pop_front();
  18. }
  19.  
  20. int main() {
  21. std::deque<std::vector<checkpoint> > cont;
  22. std::vector<checkpoint> largedata(1);
  23. std::cout << "checkpoint\n";
  24. push(cont, largedata);
  25. std::cout << "checkpoint\n";
  26. pop(cont, largedata);
  27. std::cout << "checkpoint\n";
  28. return 0;
  29.  
  30.  
  31. }
Success #stdin #stdout 0.01s 2860KB
stdin
Standard input is empty
stdout
default construct
copy construct
checkpoint
checkpoint
checkpoint