c++ - 有条件地将映射键复制到 vector

标签 c++ vector dictionary copy

我有一个 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/

相关文章:

c++ - 在 C++ 中读取 CSV 文件中的两列

c++ - Eclipse 看不到我的 C++ 包含来自单独的文件夹

c++ - 拥有包含用于单元测试的 MFC 项目和控制台应用程序的解决方案

c++ - STL vector 错误 : Unknown type name

python - 在迭代字典 python 时使用 if

c++ - Qt 源代码中如何处理带有 "±"的 GUI 字符串?

c++ - 将csv字符串读入 vector C++

c++ - 使用大括号括起来的初始化列表初始化结构 vector

dictionary - 改变值类型的Data.AVL.map

Python运行时错误: maximum recursion depth exceeded in cmp