C++ mapのerase関数:削除方法と注意点
C++において、std::mapはキーと値のペアを含む関連コンテナであり、erase()関数はstd::mapから指定された要素を削除するために使用されます。
erase()関数には複数のオーバーロード形式がありますが、最もよく使われる形式は特定のキーに対応する要素を削除するものです。例を以下に示します。
std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "cherry"}};
// 删除键为2的元素
myMap.erase(2);
erase()関数は、個々の要素を削除するだけでなく、イテレータを引数として受け取ることもでき、指定された位置の要素を削除するために使用できます。例を以下に示します:
std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "cherry"}};
// 删除第一个元素
auto it = myMap.begin();
myMap.erase(it);
erase()関数は、削除された要素の後の位置を指すイテレータを返すことに注意すべきです。このイテレータを使用してさらに操作を行うことができます。一定の範囲内の要素を削除する必要がある場合は、2つのイテレータを使用して範囲を指定できます。例を以下に示します:
std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "cherry"}, {4, "date"}, {5, "elderberry"}};
// 删除键大于等于3小于等于4的元素
auto start = myMap.lower_bound(3);
auto end = myMap.upper_bound(4);
myMap.erase(start, end);
基本的には、erase()関数はstd::mapで要素を削除するために使われ、キーまたはイテレーターに基づいて個々の要素または一定の範囲の要素を削除することができます。