#include using namespace std; class Niz { unsigned _duzina; unsigned _obezbedjeno; int* _elementi; void ispis( ostream& ostr ) const { ostr << '[' << _duzina << ':'; for( unsigned i=0; i<_duzina; i++ ) ostr << _elementi[i] << ','; ostr << "\b]"; } friend ostream& operator << (ostream&,const Niz&); void povecanjeNiza( unsigned n ) { if( n <= _duzina ) return; if( n > _obezbedjeno ) { unsigned ob = n; int pomocna = _duzina*2; if( pomocna > ob ) ob = pomocna; int* novi = new int[ob]; for( unsigned i=0; i<_duzina; i++ ) novi[i] = _elementi[i]; delete [] _elementi; _elementi = novi; _obezbedjeno = ob; } for( unsigned i=_duzina; i0 ? new int[n._duzina] : 0 ) { for( unsigned i=0; i<_duzina; i++ ) _elementi[i] = n._elementi[i]; } Niz& operator = (const Niz& n) { if( this != &n ){ delete [] _elementi; _duzina = n._duzina; _obezbedjeno = n._duzina; _elementi = n._duzina>0 ? new int[n._duzina] : 0; for( unsigned i=0; i<_duzina; i++ ) _elementi[i] = n._elementi[i]; } return *this; } int& operator [] (unsigned i) { if( i >= _duzina ) povecanjeNiza( i+1 ); return _elementi[i]; } int operator[] ( unsigned i ) const { if( i >= _duzina ) throw "Neispravan indeks niza!"; return _elementi[i]; } }; ostream& operator << (ostream& ostr, const Niz& n ) { n.ispis(ostr); return ostr; } main() { Niz a; a[4] = 3; a[2] = 2; Niz b(a); b[3] = 7; b[5] = 8; cout << "a:" << a << endl; cout << "b:" << b << endl; a[7]=2; cout << "a:" << a << endl; for( unsigned i=0; i<10; i++ ) { Niz q; for( unsigned j=0; j<1000000; j++ ) q[j]=j; } //moze efikasnije!!! for( unsigned i=0; i<10; i++ ) { Niz q; for( unsigned j=1000000; j>=1; j-- ) q[j]=j; } return 0; }