首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++如何将地图复制到矢量

C++如何将地图复制到矢量
EN

Stack Overflow用户
提问于 2009-03-26 04:00:38
回答 6查看 29.2K关注 0票数 20

在C++中,将一对地图复制到向量的最佳方法是什么?我这样做是为了随后对向量进行排序。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-03-26 04:31:53

这应该是您想要的结果:

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <iterator>

using namespace std;

bool cmp(const pair<int, int>  &p1, const pair<int, int> &p2)
{
    return p1.second < p2.second;
}

int main()
{
    map<int, int> m;
    for(int i = 0; i < 10; ++i)
        m[i] = i * -i;

    vector<pair<int, int> > v;
    copy(m.begin(), m.end(), back_inserter(v));

    sort(v.begin(), v.end(), cmp);

    for(int i = 0; i < v.size(); ++i)
        cout << v[i].first << " : " << v[i].second << endl;
    return 0;
}
票数 24
EN

Stack Overflow用户

发布于 2009-03-26 04:12:19

vector<pair<K,V> > v(m.begin(), m.end());

vector<pair<K,V> > v(m.size());
copy(m.begin(), m.end(), v.begin());

copy()<algorithm>中。

票数 28
EN

Stack Overflow用户

发布于 2009-03-26 04:05:16

如果您使用的是std::map,那么它已经按照键进行了排序。只需创建一个迭代器并遍历从begin()到end()的map,就完成了。

如果您希望按map键以外的其他元素进行排序,则可以使用相同的迭代器,并在迭代map时将每个元素的副本推送到向量上。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/684475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档