如何将键从地图复制到矢量。具体来说,我有一个map<int, int>
,我希望地图的keys
形成一个新的向量(vector<int>
)。
因此,地图(<1,100>; <2,99>)
应该提供(1,2)
的向量。
问题here,描述了我需要的东西,但是对于价值观,但是回答太过神秘而无法理解。我无法理解如何编写一元运算符函数。有人可以解释它是如何写的吗?
答案 0 :(得分:3)
而不是
v.push_back( it->second );
使用
v.push_back( it->first);
更新,以回应OP的评论
您可以将std::transform
与lambda函数一起使用来提取std::map
的密钥并将其放在std::vector
中。
示例程序:
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
map<int, int> m{{1, 20}, {2, 40}};
vector<int> keys;
// Retrieve all keys
transform(m.begin(), m.end(), back_inserter(keys), [](std::pair<int, int> p) { return p.first;} );
// Dump all keys
copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n"));
}
输出:
1
2