私は現在、std::map
:で[]演算子を使用しています。
map[key] = value;
クレイジーなことは何もありません。ただし、私の値にはconstpublicmemberが含まれています。
class Value
{
public:
Value(int input) : member(input) { }
const int member;
};
私のアプリケーションの詳細に立ち入ることなく、constメンバーは私たちが保持したいものです。それを考えると、map[key] = value
最初に既存の値を消去してから、新しい値を挿入するようなことをしていると思いました。
map.erase(map.find(key));
map.insert(make_pair(key, value));
ただし、実際に起こっているように見えるのは、operator []
が値への参照を返すため、=代入またはムーブ演算子などを使用しようとすることです。明らかに、メンバーを再割り当てできないため、これは機能しません。さて、私は消去を呼び出してから自分自身を挿入するだけで大丈夫ですが、map[key] = value
この「スワップ」手法を使用してプルオフする方法があるかどうか疑問に思いました。