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];