gpt4 book ai didi

algorithm - 为什么 std::set in function from 将非 const 对象更改为 const?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:57:16 24 4
gpt4 key购买 nike

<分区>

我在 std::vector 中有 10000 个非常量对象。我想把它们放在 std::set 中。

set<Object,bool(*)(Object, Object)> s([](Object a, Object b){
return a.getId() < b.getId()});

我想改变这个对象中的一些变量。

for_each(s.begin(), s.end(), [=](Object& a){
a.setId(new_id);
});

为什么当我在来自 的函数中使用 set 时,它会给我一个对象“会丢失 const 限定符”的错误。但是使用 vector 一切正常。我有几个想法:1) 在 for_each 中自动使用 const_iterator。2) set 只是将非常量转换为 const,但我认为这是错误的,因为我可以毫无问题地使用迭代器获取对象并更改它。

谁能解释一下,这里发生了什么

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com