0

要素を削除して(つまり、キーを指定してマップから)、削除された要素を返す組み込みメソッドはありますか?

4

2 に答える 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 に答える