C++のマップ内のキーを変更する方法はありますか?

C++では、mapのキーは変更できません。なぜなら、mapのキーは検索とソートに使用される重要な要素であり、キーを変更すると要素の位置が変わり、mapの順序や安定性が壊れてしまうからです。

元素を変更する必要がある場合は、元の要素を削除して新しい要素を挿入することができます。指定された要素を削除するためにerase()関数を使用し、新しい要素を挿入するためにinsert()関数を使用します。

以下はコードの例です。

#include <iostream>
#include <map>

int main() {
    std::map<int, std::string> myMap;
    myMap[1] = "apple";
    myMap[2] = "banana";
    myMap[3] = "cherry";

    // 修改元素
    std::map<int, std::string>::iterator it = myMap.find(2);
    if (it != myMap.end()) {
        myMap.erase(it);
        myMap.insert(std::make_pair(2, "orange"));
    }

    // 输出修改后的map
    for (const auto& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

結果は次の通りです:

1: apple
2: orange
3: cherry

キーが2の要素を削除し、新しい要素を挿入することで、マップのキーを変更することができます。

bannerAds