C++容器中存放的是数据本身还是数据地址?

发布时间 2023-11-28 21:52:22作者: 晚生小白

在C++中,std::map容器内存放的是数据本身(即键值对的值部分),而不是数据地址。当我们插入一个键值对时,std::map会自动复制值并存储副本

void test02() {
	multimap<int, Worker> m;

	Worker w;
	w.name = "sd";
	w.salary = 1234;

	m.insert(pair<int, Worker>(1, w));

	multimap<int, Worker>::iterator it = m.find(1);
	cout << it->first <<" " << it->second.name<<" " << it->second.salary << endl;

	w.name = "as";

	multimap<int, Worker>::iterator it2 = m.find(1);
	cout << it2->first << " " << it2->second.name << " " << it2->second.salary << endl;

}

这里我们将w的数据改变了,但是对容器遍历后发现数据并未改变,说明,multimap容器内存放的是数据本身,而不是数据地址