私はstd :: vectorに10000個の非constオブジェクトを持っています。私はそれらをstd :: setに入れたいと思います。<algorithm>からstd :: setの関数が非constオブジェクトをconstに変更する理由は?
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);
});
なぜ私がfrom関数を使用していると、オブジェクトが "const qualifier"を失うというエラーが表示されます。しかし、ベクトルではすべて正常です。私はいくつかの考えを持っています: 1)for_eachには、自動的にconst_iteratorが使われます。 2)setは非constをconstにキャストしますが、問題がなければiteratorのオブジェクトを取得して変更できるので間違っていると思います。
誰かがあなたがstd::set
内の要素を変更することはできませんので、ここで