在C++中,使用std::map
的erase
函数可以删除一个或多个元素,但是只能传入一个迭代器或键值作为参数。如果要一次删除多个元素,可以使用循环遍历要删除的元素,然后使用erase
函数逐个删除。
例如,以下是一种删除多个元素的方法:
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "cherry"}, {4, "date"}};
std::set<int> keysToDelete = {2, 3};
for (auto it = keysToDelete.begin(); it != keysToDelete.end(); ++it) {
myMap.erase(*it);
}
for (auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
在上述示例中,我们首先创建了一个std::map
对象myMap
,然后使用std::set
对象keysToDelete
来存储要删除的键值。接着,在循环中,我们遍历keysToDelete
中的键值,然后使用erase
函数逐个删除对应的元素。最后,我们输出剩余的元素。