ostream& operator << (ostream& stream, vector<int> &s)
{
if (s.empty())
stream << "[]\n";
else {
stream << "[";
for (unsigned int i1 = 0; i1 < s.size(); i1++) {
stream << s[i1];
if (i1 < s.size()-1)
stream << ", ";
}
stream << "]\n";
}
return stream;
}
C/C++ における代入操作
// 通常の代入
01 vector<int> s1, s2;
02 for(int i1 = 1; i1 <= 3; i1++)
03 s1.push_back(i1);
04 s2 = s1;
05 s2[0] = 10;
06 cout << s1;
07 cout << s2;
// ポインタの代入
08 vector<int> *ps1, *ps2;
09 ps1 = &s1;
10 ps2 = ps1;
11 (*ps2)[0] = 10;
12 cout << *ps1; // cout << s1; でも同じ
13 cout << *ps2;
// 通常の代入( 2 次元配列)
14 vector<int> s3[2], s4[2];
15 for(int i1 = 1; i1 <= 3; i1++)
16 s3[0].push_back(i1);
17 for(int i1 = 4; i1 <= 6; i1++)
18 s3[1].push_back(i1);
19 // s4 = s3; はできない
20 for(int i1 = 0; i1 < 2; i1++) {
21 for(int i2 = 0; i2 < 3; i2++)
22 s4[i1] = s3[i1];
23 }
24 s4[0][0] = 10;
25 cout << s3[0];
26 cout << s4[0];
// new 演算子の使用( 2 次元配列)
27 vector<int> *s5 = new vector<int> [2], *s6;
28 for(int i1 = 1; i1 <= 3; i1++)
29 s5[0].push_back(i1);
30 for(int i1 = 4; i1 <= 6; i1++)
31 s5[1].push_back(i1);
32 s6 = s5;
33 s6[0][0] = 10;
34 cout << s5[0];
35 cout << s6[0];



