【问题标题】:Store pointer pointing to object contained in map存储指向地图中包含的对象的指针
【发布时间】:2012-05-26 09:27:16
【问题描述】:

我想知道这段代码的 sn-p 是否真的会存储一个指向由映射管理的对象的指针:

std::map<std::string,MapType> map;
MapType* typePointer;

typePointer = map[someKey];

【问题讨论】:

  • 你到底想做什么?

标签: c++ pointers stl reference map


【解决方案1】:
typePointer = &map[someKey];

【讨论】:

  • @juanchopanza 怎么样? map::operator[] 返回一个不能为 null 的引用,并且相关映射不存储指针,因此它不能是对 null 的引用(这不会那么糟糕 - 你可以简单地覆盖它)。
  • @delnan 是的,对不起。我对 OP 存储指向(映射中的对象)的指针与存储(指向对象的指针)的映射感到困惑。
【解决方案2】:

不,不会的。

您在地图中存储MapType,而不是MapType*。因此,最后一行是类型不匹配,无法编译。

【讨论】:

  • 但是 operator[] 实际上返回了一个 MapType 对象的引用。这就是为什么我在这种情况下感到困惑。我可以直接将引用分配给指针吗?
  • @juanchopanza 除了这对我没有多大帮助之外,我认为术语“指向地图对象的指针”可以清楚地解释为“指向存储在地图中的对象的指针”。我不得不承认这可能会产生误导。我会换个问题。
  • @Paranaix 我认为混淆是因为您的问题标题可以用两种方式解析,并且是模棱两可的。您想要一个指向(地图中的对象)的指针,我们中的一些人认为您想要一个(指向对象的指针)存储在地图中。
  • @Paranaix 引用和指针是完全不同的东西。
猜你喜欢
  • 2014-12-19
  • 2013-03-14
  • 2021-11-06
  • 2021-05-20
  • 2015-08-07
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 2018-06-10
相关资源
最近更新 更多