先看看这个代码
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
map<int, vector<int> > map_a, map_b;
map_a[0].push_back(0);
map_b[0] = map_a[0];
map_b[0].push_back(0);
cout<<map_a[0].size()<<endl;
return 0;
}
会输出 1 还是 2 呢,如果按照 map 存 vector 的引用来理解,应该是输出 2 的。
而实际是输出 1 的。
看看这个
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
map<int, vector<int> > map_a, map_b;
map_a[0].push_back(0);
cout<<&map_a[0]<<endl;
map_b[0] = map_a[0];
cout<<&map_b[0]<<endl;
map_b[0].push_back(0);
cout<<&map_b[0]<<endl;
cout<<map_a[0].size()<<endl;
return 0;
}