如何通过引用对用户定义对象的类型集(STL)的数组元素进行增强迭代?

Wus*_*uhn 3 c++ stl compiler-errors const c++11

necklace是一个由数组组成的c数组std::set<Pearl>,其中Pearl是用户定义的类型.

necklace 定义如下

std::set<Pearl> necklace[NUM_CIRC] = { };
Run Code Online (Sandbox Code Playgroud)

在此之后,元素用Pearl's 填充.

以下代码段

for (Pearl &p : necklace[circular_coordinate]) {
    p.set_color("white");
}
Run Code Online (Sandbox Code Playgroud)

导致编译错误

从'const Pearl'类型的表达式初始化'Pearl&'类型的引用

如何necklace[circular_coordinate]以非常规方式访问?

ieh*_*ich 7

不幸的是,std::set元素是不可变的.这意味着,您无法通过设计更改它们.

其原因与使用不可变键相同std::set,std::map- 更改键可能会导致键之间的顺序发生变化,关联容器不支持.

  • @WuschelbeutelKartoffelhuhn为什么不是一个简单的`vector`或`list`?如果您需要更精确的建议,则需要优化您的要求. (2认同)