gpt4 book ai didi

c++ - 如何将 std::set 转换为 std::array?

转载 作者:行者123 更新时间:2023-12-03 08:55:05 25 4
gpt4 key购买 nike

我有 std::set 并且需要将其转换为 std::array。元素的顺序并不重要。

相反的转换似乎很简单,因为我可以这样做:

std::array<T> array;
std::set<T> set(array.begin(), array.end());

但不幸的是 std::array 没有这样的构造函数,所以我无法这样做:

std::set<T> set;
std::array<T> array(set.begin(), set.end());

这种转换的正确方法是什么?

最佳答案

正如上面评论中提到的,std::array 不适合这种情况,因为必须在编译时知道大小。 std::vector 是一个合适的替代品。

这是从集合填充 vector 的一种方法。将其转换为模板应该很简单。请注意使用 reserve 来提高效率:

#include <iostream>
#include <set>
#include <vector>
#include <algorithm>

int main()
{
std::set <int> s = { 1, 2, 3, 4, 5 };
std::vector <int> v;
v.reserve (s.size ());
std::copy (s.begin (), s.end (), std::back_inserter (v));
for (auto i : v)
std::cout << i << '\n';
}

Live demo

关于c++ - 如何将 std::set 转换为 std::array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56203010/

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