【问题标题】:Different address with map indexes vs content of map index地图索引的不同地址与地图索引的内容
【发布时间】:2009-07-07 07:09:15
【问题描述】:

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

请参阅下面的代码进行说明。

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

【问题讨论】:

    标签: c++ stl map


    【解决方案1】:

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

    考虑使用指针 (map&lt; int, list&lt;char&gt;* &gt;)。

    【讨论】:

    • 不喜欢这个主意。我宁愿在该地图中使用对副本的引用。
    【解决方案2】:

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

    mapper[1] = listA;
    

    【讨论】:

      【解决方案3】:

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

        mapper[1] = listA;
      

      实际上称为列表的赋值运算符,它将值复制到新的内存位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-11
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        • 2021-02-07
        相关资源
        最近更新 更多