在下面的代码中,为什么当我获取地图索引的地址(包含列表)并且我获取列表本身的地址时,它们都具有不同的值。
请参阅下面的代码以获得澄清。
#include <iostream>
#include <list>
#include <map>
using namespace std;
int main()
{
list<char> listA; //list of chars
map<int,list<char> > mapper; //int to char map
mapper[1] = listA;
cout << &(mapper[1]) << endl;
cout << &listA << endl;
}
答案 0 :(得分:2)
您获得的地址不同,因为您创建了原始列表的副本并将其分配给地图结构。
考虑使用指针(map< int, list<char>* >
)。
答案 1 :(得分:1)
此行将添加本地listA
值的副本,并将其添加到索引1的地图中。您现在有两个不同的列表。
mapper[1] = listA;
答案 2 :(得分:0)
因为列表已复制到地图中。因此它具有相同的值,但存储位置不同。这一行:
mapper[1] = listA;
实际上调用了list的赋值运算符,它将值复制到新的内存位置。