C++ 如何增强对';用户定义对象的类型集(STL)的类型?

C++ 如何增强对';用户定义对象的类型集(STL)的类型?,c++,c++11,compiler-errors,stl,constants,C++,C++11,Compiler Errors,Stl,Constants,项链是由std::set元素组成的c数组,其中Pearl是用户定义的类型 项链的定义如下 std::set<Pearl> necklace[NUM_CIRC] = { }; 导致编译错误 来自的“Pearl&”类型引用的初始化无效 “const-Pearl”类型的表达式 如何以非常量方式访问项链[circular_Coordination]?不幸的是,std::set元素是不可变的。这意味着,您不能通过设计更改它们 原因与std::set和std::map中的不可变键相同-更改键可

项链
是由
std::set
元素组成的c数组,其中
Pearl
是用户定义的类型

项链
的定义如下

std::set<Pearl> necklace[NUM_CIRC] = { };
导致编译错误

来自的“Pearl&”类型引用的初始化无效 “const-Pearl”类型的表达式


如何以非常量方式访问项链[circular_Coordination]?

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


原因与
std::set
std::map
中的不可变键相同-更改键可能会导致键之间的顺序发生更改,这是关联容器不支持的。

如果
项链
是您应该使用的数组(Pearl&p:Nerch)可能重复的:
std::set s;适用于(内部和编号:s)(无效)n->“错误:将'int&'类型的引用绑定到'const int'会丢弃限定符”,谢谢。您是否有关于允许修改构件的替代容器的建议?我不想分配2D数组来节省内存(有些位置有大量珍珠,而其他位置只有1个)。@wuschelbeutelkartofelhuhn为什么不分配一个简单的
向量
列表
?如果你想要更精确的建议,你需要完善你的要求。谢谢。IIRC vector最初为10个成员分配内存(尽管这可能会改变),所以我将使用list(我假设它是一个ll)。反正我不需要O(1)个成员访问。@Wuschelbeutelkartofelhuhn
std::vector
有一个构造函数,它将所需的初始元素数作为参数。这对你的案子很有用。另外,
std::vector
在几乎所有不需要随机删除的情况下都比
std::list
好。@wuschelbeutelkartofelhuhn如果您不能绝对确定您需要的不是
std::vector
,请使用vector。
for (Pearl &p : necklace[circular_coordinate]) {
    p.set_color("white");
}