我有一个 map 容器。我想将其所有带有用户指定首字母的键复制到一个 vector 中。如何以有效的方式做到这一点?谢谢!
std::map(std:string, size_t) myMap;
myMap.insert(std:make_pair("Ace", 11);
myMap.insert(std:make_pair("Ape", 12);
myMap.insert(std:make_pair("Age", 13);
myMap.insert(std:make_pair("Beat", 21);
myMap.insert(std:make_pair("Boat", 22);
myMap.insert(std:make_pair("Boss", 23);
myMap.insert(std:make_pair("Coat", 31);
myMap.insert(std:make_pair("Cost", 32);
myMap.insert(std:make_pair("Cast", 33);
例如,如果我想从 myMap 中提取所有键以“Bo”开头的元素并将满意的结果填充到 myVec,myVec 将具有以下元素:
Boat
Boss
最佳答案
为简洁起见省略了声明:
begin = myMap.lower_bound("Bo");
end = std::find_if(begin, myMap.end(), first_does_not_begin_with("Bo"));
for (i=begin; i!=end; ++i)
myVec.push_back(i->first);
您可以实现 first_does_not_begin_with
仿函数类,对吗?它的运算符(operator)应该有这个签名:
bool operator()(std::pair<const std::string, size_t> const &);
关于c++ - 有条件地将映射键复制到 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6715490/