作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从 std::unordered_multimap<uint, T> lookup
开始到 std::vector<T> v
到目前为止我已经尝试过了
std::vector<T> v(lookup.begin(), lookup.end());
但它显然不起作用,因为 begin()
的结果迭代器和 end()
类型为 pair<uint, T>
,那么最快的正确方法是什么?
感谢您的帮助!
最佳答案
提取hash map中std::pair
的value部分,放入vector中:
#include <iostream>
#include <unordered_map>
#include <vector>
int main() {
using Map = std::unordered_multimap<int, int>;
auto m = Map { {1, 1}, {1, 2}, {1, 3}, {2, 4}, {2, 5}, {3, 6} };
std::vector<int> v;
v.reserve(m.size());
for (auto const& elem : m)
v.push_back(elem.second);
for (auto const& elem : v)
std::cout << elem << "\n";
}
请注意,在 C++11 中,您可以使用范围 for 循环 + auto
来避免必须显式表达 map 元素的类型。此外,您还可以使用初始化列表语法来快速初始化 map 。
注意:在实际示例中,请务必对 vector 使用reserve()
,以避免分配过多的内存。
关于c++ - 如何将 std::unordered_multimap<uint, T> 转储到 std::vector<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160275/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!