1.テストコードと結果
string s1("contents1");
string s2("contents2");
string s3("contents3");
string s4("contents4");
string s5("contents5");
string s6("contents6");
// all new messages, no copies yet
Message m1(s1);
Message m2(s2);
Message m3(s3);
Message m4(s4);
Message m5(s5);
Message m6(s6);
Folder f1;
Folder f2;
m1.save(f1);
m3.save(f1);
m5.save(f1);
m1.save(f2);
m2.save(f2);
m4.save(f2);
m6.save(f2);
/ *再輸出
メッセージ:
contents1
は2つのフォルダに
表示されますフォルダには4つのメッセージが含まれています
メッセージ1:
コンテンツ1
メッセージ2:
コンテンツ2
メッセージ3:
コンテンツ
4メッセージ4:
コンテンツ6
* /
m1.debug_print();
f2.debug_print();
// create some copies
Message c1(m1);
Message c2(m2), c4(m4), c6(m6);
/ * f2增加了c1、c2、c4、c6、より出是
メッセージ:
contents1
2つのフォルダに表示
フォルダには8つのメッセージが含まれています
メッセージ1:
コンテンツ1
メッセージ2:
コンテンツ2
メッセージ3:
コンテンツ
4メッセージ4:
コンテンツ6
メッセージ5:
コンテンツ1
メッセージ6:
コンテンツ2
メッセージ7:
contents4
メッセージ8:
contents6
* /
m1.debug_print();
f2.debug_print();
// now some assignments
m2 = m3;
m4 = m5;
m6 = m3;
m1 = m5;
/ * M1の含有量はM2、M4及びM6、唯一C1、C2、C4の各割り当て後M5となり、F2に残っC6。
メッセージ:
contents5は
1で表示されるフォルダ
のフォルダは、4つのメッセージが含ま
:メッセージ1
contents1
メッセージ2:
contents2
メッセージ3:
contents4
メッセージ4:
contents6
* /
m1.debug_print();
f2.debug_print();
// finally, self-assignment
m2 = m2;
m1 = m1;
/ * m1は自分自身を0に割り当てます。f2変更なし
メッセージ:
contents5
0フォルダーに表示
フォルダーには4つのメッセージが含まれます
メッセージ1:
contents1
メッセージ2:
contents2
メッセージ3:
contents4
メッセージ4:
contents6
* /
m1.debug_print();
f2.debug_print();
vector<Message> vm;
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m1);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m2);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m3);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m4);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m5);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m6);
vector<Folder> vf;
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(f1);
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(f2);
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(Folder(f1));
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(Folder(f2));
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(Folder());
cout << "capacity: " << vf.capacity() << endl;
Folder f3;
f3.save(m6);
vf.push_back(f3);
cout << "capacity: " << vf.capacity() << endl;
cout << endl;
残りの結果は次のとおりです。
capacity: 0
capacity: 1
capacity: 2
capacity: 3
capacity: 4
capacity: 6
capacity: 0
capacity: 1
capacity: 2
capacity: 3
capacity: 4
capacity: 6 //这里虽然结果是6,但是size是6
capacity: 6
【参考】
【1】コードcopyControl.h