#include <vector>
#include <cstddef>
#include <iostream>
struct foo {
double data;
};
class VectorReserveItr : public std::iterator<std::input_iterator_tag, foo> {
size_t i;
size_t capacity;
public:
VectorReserveItr(size_t i, size_t capacity) :i(i), capacity(capacity) {}
VectorReserveItr& operator++() {++i;return *this;}
bool operator!=(const VectorReserveItr& rhs) {return i!=rhs.i;}
std::vector<foo> operator*() {
std::vector<foo> ret;
ret.reserve(capacity);
return ret;
}
};
int main() {
std::vector<std::vector<foo>> v(VectorReserveItr(0, 1000), VectorReserveItr(100, 1000));
std::cout << "vec size " << v.size() << "\n";
std::cout << "vec[0] capacity " << v[0].capacity() << "\n";
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnN0cnVjdCBmb28gewogICAgZG91YmxlIGRhdGE7Cn07CgpjbGFzcyBWZWN0b3JSZXNlcnZlSXRyIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjppbnB1dF9pdGVyYXRvcl90YWcsIGZvbz4gewogIHNpemVfdCBpOwogIHNpemVfdCBjYXBhY2l0eTsKcHVibGljOgogIFZlY3RvclJlc2VydmVJdHIoc2l6ZV90IGksIHNpemVfdCBjYXBhY2l0eSkgOmkoaSksIGNhcGFjaXR5KGNhcGFjaXR5KSB7fQogIFZlY3RvclJlc2VydmVJdHImIG9wZXJhdG9yKysoKSB7KytpO3JldHVybiAqdGhpczt9CiAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvclJlc2VydmVJdHImIHJocykge3JldHVybiBpIT1yaHMuaTt9CiAgc3RkOjp2ZWN0b3I8Zm9vPiBvcGVyYXRvciooKSB7CiAgICAgIHN0ZDo6dmVjdG9yPGZvbz4gcmV0OwogICAgICByZXQucmVzZXJ2ZShjYXBhY2l0eSk7CiAgICAgIHJldHVybiByZXQ7CiAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxmb28+PiB2KFZlY3RvclJlc2VydmVJdHIoMCwgMTAwMCksIFZlY3RvclJlc2VydmVJdHIoMTAwLCAxMDAwKSk7CiAgICBzdGQ6OmNvdXQgPDwgInZlYyBzaXplICIgPDwgdi5zaXplKCkgPDwgIlxuIjsKICAgIHN0ZDo6Y291dCA8PCAidmVjWzBdIGNhcGFjaXR5ICIgPDwgdlswXS5jYXBhY2l0eSgpIDw8ICJcbiI7Cn0=