我有一个 map
形式 map<long, class>
然后我在 long 上搜索一个元素,返回 pair<bool, class&>
形式的结果- 指示引用是否有效的 bool 值。
引用来自迭代器,即,形式为 it->second
其中 it
是指向 map
的迭代器具有正确 long
的元素.
然后我在另一个函数中继续操作对类实例的引用。
所以我的问题是:
- 这是返回引用的有效方式吗?
- 操纵引用的对象是否会改变 map 中包含的元素?
如果这些问题看起来很愚蠢,请提前致歉:我认为答案很简单,但我的代码行为不当,所以我试图填补所有可能的空白。
最佳答案
1) 只要引用只在 bool 标志为真时使用,并且引用的对象不会从 map 中移除。
2) 尽管我认为这在技术上是有效的,但我不会这样做。我将传递一个指向该类的指针,而不是 bool 和一个引用,其中 nullptr
表示在映射中找不到该类实例。
3) 是的,修改被引用/指向的实例会修改映射中的对象;只要在过程中的某个地方您没有意外地复制对象,并且现在指的是拷贝,而不是 map 中的原始对象。
关于c++ - 这是操纵 C++ 容器元素的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26074674/