我有一个map
形式的map<long, class>
我在long上搜索一个元素,返回pair<bool, class&>
形式的结果 - bool指示引用是否是有效的。
引用来自it->second
形式的迭代器,即it
是指向具有正确map
的{{1}}元素的迭代器。< / p>
然后我继续在另一个函数中操作对类实例的引用。
所以我的问题是:
如果这些看起来像是愚蠢的问题,请提前道歉:我认为答案很简单,但我的代码行为不端,所以我试图填补所有可能的空白。
答案 0 :(得分:3)
1)只要在bool标志为true时使用引用,并且未从地图中删除引用的对象。
2)虽然我称之为技术上有效,但我不会这样做。我将传递一个指向该类的指针而不是bool和引用,nullptr
表示在地图中找不到类实例。
3)是的,修改引用/指向的实例将修改地图中的对象;只要你沿途的某个地方不小心制作一个对象的副本,现在指的是副本,而不是地图中的原始对象。
答案 1 :(得分:0)
这是返回引用的有效方法吗?
没有。您无法创建&#34;无效的参考&#34;如果没有对象可以参考;因此,在这种情况下你需要乱用一个虚拟对象。
返回一个指针。它更简单,更小,更不令人惊讶,并且(最重要的是)如果没有任何对象可以合理地为空。
并且会操纵引用的对象改变地图中包含的元素吗?
是;可以使用对map元素的引用或指针来操作该元素。