fork download
  1. #include <vector>
  2. #include <cstddef>
  3. #include <iostream>
  4.  
  5. struct foo {
  6. double data;
  7. };
  8.  
  9. class VectorReserveItr : public std::iterator<std::input_iterator_tag, foo> {
  10. size_t i;
  11. size_t capacity;
  12. public:
  13. VectorReserveItr(size_t i, size_t capacity) :i(i), capacity(capacity) {}
  14. VectorReserveItr& operator++() {++i;return *this;}
  15. bool operator!=(const VectorReserveItr& rhs) {return i!=rhs.i;}
  16. std::vector<foo> operator*() {
  17. std::vector<foo> ret;
  18. ret.reserve(capacity);
  19. return ret;
  20. }
  21. };
  22.  
  23. int main() {
  24. std::vector<std::vector<foo>> v(VectorReserveItr(0, 1000), VectorReserveItr(100, 1000));
  25. std::cout << "vec size " << v.size() << "\n";
  26. std::cout << "vec[0] capacity " << v[0].capacity() << "\n";
  27. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
vec size 100
vec[0] capacity 1000