#include<iostream>
template < class T > class Vector {
public:
T * array;
int arr_size, capacity;
Vector( int n_size = 0 )
: arr_size( n_size )
{
array = new T[ arr_size ];
}
size_t size() {
return arr_size;
}
T & push_back( const T & t ) {
if( arr_size > capacity )
resize();
array[ arr_size ] = t;
arr_size++;
}
void resize() {
T * backup = new T[ arr_size ];
backup = array;
delete[] array;
array = new T[ arr_size ];
array = backup;
capacity = arr_size;
}
T & operator []( int i ) {
return array[ i ];
}
const T & operator []( int i ) const {
return array[ i ];
}
};
int main() {
Vector < int > tablica;
for( int i = 0; i < 20; i++ ) {
tablica.push_back( i );
}
for( size_t i = 0; i < tablica.size(); i++ ) {
std::cout << tablica[ i ] << " ";
}
}
I2luY2x1ZGU8aW9zdHJlYW0+Cgp0ZW1wbGF0ZSA8IGNsYXNzIFQgPiBjbGFzcyBWZWN0b3IgewpwdWJsaWM6CiAgICBUICogYXJyYXk7CiAgICBpbnQgYXJyX3NpemUsIGNhcGFjaXR5OwogICAKICAgIFZlY3RvciggaW50IG5fc2l6ZSA9IDAgKQogICAgICAgIDogYXJyX3NpemUoIG5fc2l6ZSApCiAgICB7CiAgICAgICAgYXJyYXkgPSBuZXcgVFsgYXJyX3NpemUgXTsKICAgIH0KICAgCiAgICBzaXplX3Qgc2l6ZSgpIHsKICAgICAgICByZXR1cm4gYXJyX3NpemU7CiAgICB9CiAgIAogICAgVCAmIHB1c2hfYmFjayggY29uc3QgVCAmIHQgKSB7CiAgICAgICAgaWYoIGFycl9zaXplID4gY2FwYWNpdHkgKQogICAgICAgICAgICAgcmVzaXplKCk7CiAgICAgICAKICAgICAgICBhcnJheVsgYXJyX3NpemUgXSA9IHQ7CiAgICAgICAgYXJyX3NpemUrKzsKICAgIH0KICAgCiAgICB2b2lkIHJlc2l6ZSgpIHsKICAgICAgICBUICogYmFja3VwID0gbmV3IFRbIGFycl9zaXplIF07CiAgICAgICAgYmFja3VwID0gYXJyYXk7CiAgICAgICAgZGVsZXRlW10gYXJyYXk7CiAgICAgICAgYXJyYXkgPSBuZXcgVFsgYXJyX3NpemUgXTsKICAgICAgICBhcnJheSA9IGJhY2t1cDsKICAgICAgICBjYXBhY2l0eSA9IGFycl9zaXplOwogICAgfQogICAKICAgIFQgJiBvcGVyYXRvciBbXSggaW50IGkgKSB7CiAgICAgICAgcmV0dXJuIGFycmF5WyBpIF07CiAgICB9CiAgICBjb25zdCBUICYgb3BlcmF0b3IgW10oIGludCBpICkgY29uc3QgewogICAgICAgIHJldHVybiBhcnJheVsgaSBdOwogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBWZWN0b3IgPCBpbnQgPiB0YWJsaWNhOwogICAgZm9yKCBpbnQgaSA9IDA7IGkgPCAyMDsgaSsrICkgewogICAgICAgIHRhYmxpY2EucHVzaF9iYWNrKCBpICk7CiAgICB9CiAgICBmb3IoIHNpemVfdCBpID0gMDsgaSA8IHRhYmxpY2Euc2l6ZSgpOyBpKysgKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IHRhYmxpY2FbIGkgXSA8PCAiICI7CiAgICB9CiAgIAp9