地图索引与地图索引内容的地址不同

时间:2009-07-07 07:09:15

标签: c++ stl map

在下面的代码中,为什么当我获取地图索引的地址(包含列表)并且我获取列表本身的地址时,它们都具有不同的值。

请参阅下面的代码以获得澄清。

#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;
}

3 个答案:

答案 0 :(得分:2)

您获得的地址不同,因为您创建了原始列表的副本并将其分配给地图结构。

考虑使用指针(map< int, list<char>* >)。

答案 1 :(得分:1)

此行将添加本地listA值的副本,并将其添加到索引1的地图中。您现在有两个不同的列表。

mapper[1] = listA;

答案 2 :(得分:0)

因为列表已复制到地图中。因此它具有相同的值,但存储位置不同。这一行:

  mapper[1] = listA;

实际上调用了list的赋值运算符,它将值复制到新的内存位置。