set
の要素を変更したいので、set<T>::iterator
を使用しました。しかし、コンパイラは「要素はconstです」と主張しています。次に、set<T>::iterator
がconst_iterator
...セットされた要素を変更するには?
だから、私はどのように要素を変更できますか?それを消去してから新しいものを挿入しますか?
set
の要素を変更したいので、set<T>::iterator
を使用しました。しかし、コンパイラは「要素はconstです」と主張しています。次に、set<T>::iterator
がconst_iterator
...セットされた要素を変更するには?
だから、私はどのように要素を変更できますか?それを消去してから新しいものを挿入しますか?
set
の要素はソートされた順序になります。要素の変更が許可されている場合、この並べ替え順序は維持できません。したがって、アイテムを変更することはできません。既存の要素を消去し、新しい要素を挿入する必要があります。
EDIT:setの特定の場所に要素を追加することはできません。あなたが何をしていても、セットはソートされた順番でなければなりません。したがって、特定の要素を消去し、新しい要素を挿入して、setの順序が失われないようにする必要があります。
setについてさらに読む!
要素に加えられた変更の中には、ソート方法に影響を与えないものもあります。ソート順に影響しないと確信する変更を加えたい場合、最後の手段として常に 'const_cast'があります。危険で美しいものではありませんが、それにもかかわらずです。 – jogojapan
ありがとう。私はそれを知っています。これが要素を変更する唯一の方法ですか? –
'erase'は、それが呼び出すユーザコードがスローしない限りスローしませんので、新しい要素を挿入して古い要素を削除する方が良いでしょう。それはあなたに強い例外保証のチャンスを与えます。 –