c++ - 这是操纵 C++ 容器元素的正确方法吗?

标签 c++ dictionary reference iterator containers

我有一个 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/

相关文章:

c++ - 链接错误 : Installing boost zlib filters using NuGet in Visual Studio (2012)

c++ - 在即将到来的 c++0x 标准下,我们可以通过这种语法将数组作为参数传递给函数吗?

c++ - 什么时候引用变量合适,为什么?你能解释一下实际的语法和位置吗?

vb.net - 在没有整个框架的情况下创建 .NET 应用程序?

c++ - 应用程序库之间循环依赖的影响

c++ - 将 Int 转换为 Char 数组

python - 字典大小在增加一个元素时减少

java - 在 Java 中使用 map 时出现意外/未定义的结果

arrays - 在 Swift 中将 NSArray 转换为 Array 会对数组值产生 nil

java - Eclipse RCP 获取部件实例