如何解决是否可以使用 C++20 <ranges> 对 <set> 进行单行初始化?
我想知道在 C++20 中使用 <ranges>
是否最终可以从一个序列中进行选择并在一行中初始化一个 set
,就像在 C# 中使用 {{1} }}。这可能需要将 IEnumerable
对象转换为 <ranges>
。
C#:
std::initializer_list
C++:
int[] sequence = new int[] { 0,1,2,3,4 };
HashSet<int> set = new HashSet<int>(sequence.Where((int i) => i % 2 == 0));
我想做类似的事情:
std::vector<int> sequence { 0,4 };
auto matcher = sequence | std::ranges::views::filter([](int i) { return !(i % 2); });
std::set<int> myset(matcher.begin(),matcher.end());
解决方法
实际上,目前是不可能的,但在不久的将来,我们可以获得具有此类功能的 ranges::to。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。