【发布时间】:2021-12-28 22:35:42
【问题描述】:
我想创建一个 std::vector<char> 类似: v(map.begin(), map.end());,而不是遍历地图的所有元素并一遍又一遍地调整 v 的大小。
#include<iostream>
#include<map>
#include<vector>
int main() {
std::map<int, char> map{{1,'a'},{2,'b'},{3,'c'}, {4,'d'}};
std::vector<char> v;
for(auto& [ i , c ] : map){
// std::cout << i << " -> " << c <<"\n";
v.push_back(c);
}
}
【问题讨论】:
-
如果您不想调整大小,为什么不直接使用
reserve()? -
std::transform(map.begin(), map.end(), std::back_inserter(v), [](auto const& pr){ return pr.second; });
标签: c++