在C++中,将一对地图复制到向量的最佳方法是什么?我这样做是为了随后对向量进行排序。
发布于 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;
}
发布于 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>
中。
发布于 2009-03-26 04:05:16
如果您使用的是std::map,那么它已经按照键进行了排序。只需创建一个迭代器并遍历从begin()到end()的map,就完成了。
如果您希望按map键以外的其他元素进行排序,则可以使用相同的迭代器,并在迭代map时将每个元素的副本推送到向量上。
https://stackoverflow.com/questions/684475
复制相似问题