【发布时间】:2012-01-19 00:25:31
【问题描述】:
从unordered_map 获取键和值列表(作为vector)的最有效方法是什么?
为了具体起见,假设有问题的地图是unordered_map<string, double>。
然后我想以vector<string> 获取键,以vector<double> 获取值。
unordered_map<string, double> um;
vector<string> vs = um.enum_keys();
vector<double> vd = um.enum_values();
我可以遍历地图并收集结果,但还有更多 有效的方法?有一个也适用于常规地图的方法会很好, 因为我可能会切换到那个。
【问题讨论】:
-
查看标准草案,我看不到获得您想要的东西的简单方法,但我可能会遗漏一些东西。你可以说
std::vector<std::pair<const Key, Val>> v(map.begin(), map.end());,它应该给你一个键值对向量。 -
@keith.layne:我正在为键和值寻找单独的向量。
-
正如我所说,没有任何内置功能。见下文。
-
@muntoo:不确定编辑的内容。
vector<string> vs = um.enum_keys();应该表示什么? -
Boost 有一个转换迭代器,它可以只提取键或值,但正如 Keith 建议的那样,同时执行这两种操作会更快
标签: c++ vector c++11 std unordered-map