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 回答