【问题标题】:C++ - Access map referenceC++ - 访问地图参考
【发布时间】:2011-10-24 17:56:16
【问题描述】:

对不起。关于参考地图访问的一个小问题

如果我有:

map<int,string> *items= new map<int,string>();

我这样做?

string x = &items[100];

【问题讨论】:

  • 在该代码中,items 不是引用而是指针。
  • 不要说new。曾经。 (除非您了解自己在做什么,否则您可以通过忽略此建议感到自在的事实来判断。)
  • 不确定您要完成什么,但&amp;items[100] 的意思是 - 给我一个名为项目的动态分配的地图数组中的第 100 个地图的地址。但是,由于您只分配了一个地图(而不是地图数组),这可能不是您想要的。

标签: c++ pointers stl map reference


【解决方案1】:

所以,我首先要问;为什么要动态分配地图?它首先违背了使用它的目的。地图将在内部对其项目使用动态分配,但地图本身很便宜,并且您失去了通过范围确定性管理其内存的能力。因此,您的代码变为:

map<int,string> my_map;
my_map[100] = "some string";
string x = items[100];

否则需要先解引用映射指针。

string x = (*my_map)[100];

真的……不要那样做。

【讨论】:

    【解决方案2】:

    如果你必须有:

    map<int,string> *items= new map<int,string>();
    

    你这样做:

    string x = (*items)[100];
    

    如果可以的话:

    map<int,string> items;
    

    你会这样做:

    string x = items[100];
    

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多