【发布时间】:2014-10-13 16:34:46
【问题描述】:
How to retrieve all keys (or values) from a std::map and put them into a vector? 涵盖了从 C++11 之前的映射中的键填充 std::vector 的方法。
有没有办法在 C++11 中使用 lambdas 等来做到这一点,这意味着我们可以在一行中完成,这样我们就可以从映射中初始化向量,而不是创建一个向量并在 2 个动作中填充它?
例如vector<int> v(???(m.begin(),m.end()));
纯 C++11 是首选,但 boost 是可以接受的...目的是在一行中完成此操作而不会过于复杂和“炫耀”,因此不会让其他开发人员感到困惑。
为了比较,“明显”的 C++11 解决方案是:
vector<int> v;
v.reserve(m.size()); //not always needed
for(auto &x : map)
v.push_back(x.first)
【问题讨论】:
-
An answer 在那个帖子中已经有了 C++11 解决方案。
-
一个解决方案,但不一定是最好的。