rendered paste body// Zadanie 18 z rodziału 16 książki
// "Thinking in C++. Edycja polska"
// (c) Bruce Eckel 2000
// Autor: Marcin Gil 26641 4IID
#include "require.h"
#include <iostream>
#include <sstream> // "Strumienie lancuchowe"
#include <cstring>
using namespace std;
template<class T, int sz = 100>
class IntArray {
T i[sz];
public:
IntArray() { memset(i, 0, sz* sizeof(*i)); }
T& operator[](T x) {
require(x >= 0 && x < sz,
"IntArray::operator[] poza zakresem");
return i[x];
}
friend ostream& operator<<(ostream& os, const IntArray<T, sz>& ia);
friend istream& operator>>(istream& is, IntArray<T, sz>& ia);
};
template<class T, int sz>
ostream& IntArray<T, sz>::operator<<(ostream& os, const IntArray<T, sz>& ia) {
for(int j = 0; j < ia.sz; j++) {
os << ia.i[j];
if(j != ia.sz -1)
os << ", ";
}
os << endl;
return os;
}
template<class T, int sz>
istream& IntArray<T, sz>::operator>>(istream& is, IntArray<T, sz>& ia){
for(int j = 0; j < ia.sz; j++)
is >> ia.i[j];
return is;
}
int main() {
stringstream input("47 34 56 92 103");
IntArray<int> I;
input >> I;
I[4] = -1; // Wykorzystanie przeciazonego operatora []
cout << I;
system("PAUSE");
return 0;
} ///:~