c++ - 如何使用转换函数模板将 map 转换为 vector

标签 c++ stl

我想将 map 转换为 vector 。

int main()
{
    map <int,int> m;
    m[0]=99;
    m[1]=5;

    vector<int> v;
    transform( m.begin(), m.end(), back_inserter( v ), ??? );
}

我可以使用 STL 中的哪个函数代替 ???。我做了很多谷歌搜索,但没有找到任何东西。

任何讨论都会有所帮助。

最佳答案

或者使用 lambda:

transform(m.begin(), m.end(), back_inserter(v),
         [](pair<const int, bool> const & p) { return p.second; });

或者用一个简单的循环:

for (const auto & p : m) { v.push_back(p.second); }

或者使用旧式循环:

for (map<int, bool>::const_iterator it = m.begin(); it != m.end(); ++it)
{ v.push_back(it->second); }

在任何情况下,请事先调用 v.reserve(m.size()) 以避免重新分配。

关于c++ - 如何使用转换函数模板将 map 转换为 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19588420/

相关文章:

c++ - 是否在每次迭代时评估范围 for 语句中的表达式?

c++ - C++-重载结构取消引用运算符,并在unique_ptr中使用它

c++ - 我在这里的绑定(bind)功能做错了什么?

c++ - 包含自己的 map

c++ - std::vector保留区的成本比预期的高

c++ - 如何使negate_unary使用任何类型?

c++ - glfwSetCursorPosCallback 在另一个类中运行

c++ - NetBeans 8.0.2 中打开的文件保存在项目文件中,因此在 GIT 中变脏

c++ - Windows API的STL成员变量初始化问题

C++ 并行 std::vector 排序与昂贵的复制