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

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

概述necklace是一个c-array,由std :: set< Pearl>元素组成,其中Pearl是用户定义的类型. 项链定义如下 std::set<Pearl> necklace[NUM_CIRC] = { }; 在此之后元素填充珍珠. 以下代码段 for (Pearl &p : necklace[circular_coordinate]) { p.set_color("white") necklace是一个c-array,由std :: set< Pearl>元素组成,其中Pearl是用户定义的类型.

项链定义如下

std::set<Pearl> necklace[NUM_CIRC] = { };

在此之后元素填充珍珠.

以下代码段

for (Pearl &p : necklace[circular_coordinate]) {    p.set_color("white");}

导致编译错误

invalID initialization of reference of type ‘Pearl&’ from
Expression of type ‘const Pearl’

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

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

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

总结

以上是内存溢出为你收集整理的c – 如何通过引用对用户定义对象的类型集(STL)的数组元素进行增强迭代?全部内容,希望文章能够帮你解决c – 如何通过引用对用户定义对象的类型集(STL)的数组元素进行增强迭代?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1217754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存