gpt4 book ai didi

c++ - 如何将 std::unordered_multimap 转储到 std::vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:57 25 4
gpt4 key购买 nike

我正在尝试从 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(),以避免分配过多的内存。

Live Example .

关于c++ - 如何将 std::unordered_multimap<uint, T> 转储到 std::vector<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com