0
是否有一個內置方法可以移除和元素(即從給定的關鍵字的map)並返回移除的元素?C++:從容器中移除元素並將其取回
是否有一個內置方法可以移除和元素(即從給定的關鍵字的map)並返回移除的元素?C++:從容器中移除元素並將其取回
沒有內置的方法來做到這一點,然而你可以通過訪問它來存儲元素,然後刪除它。 擦除需要你指定key.If它是一個多圖,你應該刪除的位置。
這裏是一個功能,可以使用(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
使用['at'](http://en.cppreference.com/ w/cpp/container/map/at)來訪問該元素,然後['erase'](http://en.cppreference.com/w/cpp/container/map/erase)將其從集裝箱。 – 0x499602D2
@ 0x499602D2 1.我還沒有使用C++ 11。 2.這就是我所要求的,如果我需要這樣做,如果你確實知道這一點,你可以添加它作爲答案。 – Subway