要素を削除して(つまり、キーを指定してマップから)、削除された要素を返す組み込みメソッドはありますか?
2 に答える
0
これを行うための組み込みメソッドはありませんが、要素にアクセスして要素を保存し、消去することはできます。消去にはキーを指定する必要があります。マルチマップの場合は位置で消去する必要があります。
于 2013-06-22T20:26:36.407 に答える
0
使用できる関数を次に示します (C++11):
#include <iostream>
#include <map>
template<typename T>
typename T::mapped_type removeAndReturn(T& mp, const typename T::key_type& val) {
auto it = mp.find(val);
auto value = std::move(it->second);
mp.erase(it);
return value;
}
int main() {
std::map<int, int> m;
m[3] = 4;
std::cout << "Map is empty: " << std::boolalpha << m.empty() << std::endl;
std::cout << "Value returned: " << rm_and_return(m, 3) << std::endl;
std::cout << "Map is empty: " << std::boolalpha << m.empty() << std::endl;
}
出力:
Map is empty: false
Value returned: 4
Map is empty: true
于 2013-06-22T20:40:26.527 に答える