问题标签 [std-ranges]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 错误:“排序”不是“std::ranges”的成员;你的意思是'std :: sort'吗?
我运行了以下代码
当我编译时g++ -std=c++20 file.cpp
,我得到
gcc --version
: gcc 10.2.0g++ --version
: g++ 10.2.0
为什么排序不是成员?我正在使用 VScode 智能感知,它显示诸如advance
、begin
、之类的方法common_view
。但不排序。
c++ - 错误:不匹配调用 '(const std::ranges::__sort_fn)
我正在练习vectors
并且ranges
陷入c++ 20
以下状态。
我编译了代码g++ 10.2
并得到了错误
而不是std::views::transform
,我也试过
- 拉姆达表达式
ranges::sort(models, {}, &Model::next_event_time)
但他们都产生了类似no match for call to
的错误。为什么会这样?
c++ - std::ranges::copy 在 Visual Studio 中不接受 std::vector
下面的代码不能在 Visual Studio 中编译,给出
错误 C2672 'operator __surrogate_func':找不到匹配的重载函数 sortms C:\Users\David\source\repos\sortms\sortms.cpp 103
当我使用 C 样式数组时,该函数按编写方式工作。如果我使用指定的注释代码,该函数也可以工作input.begin(), input.end(), output.begin()
。
我正在使用 Visual Studio Community 2019 v16.8.6,使用该/std:c++latest
选项进行编译。我认为标准容器是基于范围的?
有人可以帮助我更好地理解std::range::copy()
vsstd::copy()
在处理向量或其他标准容器时的优势吗?
c++ - 如何在没有飞船比较运算符的情况下满足自定义类型的完全排序(范围::is_sorted,范围::排序)
考虑以下代码:
可以通过在 A 中添加“spaceship”比较运算符来修复代码:
但是,在类之外定义它适用于第一个assert
,而不是第二个:
ranges::less
不修改是否可以满足要求A
?
c++ - 相对简单的自定义容器签名不满足概念
我正在尝试使用<ranges>
(C++20 MSVC) 来迭代一个名为 的自定义容器Span
,其begin/end()
方法返回一个SpanIter
. 但是,以下静态断言在该test()
方法中失败,并且管道运算符无法被我的类识别(但不是vector<>
)。
我认为方法签名与这个工作示例相匹配。我无法追踪丢失的内容,无论是方法还是 typedef/using。
c++ - 为什么我不能从范围迭代器构造 string_view?
C++20 添加了一个构造函数,basic_string_view
该构造函数需要两个迭代器。但是,当我尝试string_view
使用来自公共范围的迭代器构造 a 时,我得到一个错误。
c++ - 是单行初始化可以用 C++20?
我想知道<ranges>
在 C++20 中是否最终可以从序列中选择并set
在一行中初始化 a ,就像在 C# 中使用IEnumerable
. 这可能需要将<ranges>
对象转换为std::initializer_list
.
C#:
C++:
我想做类似的事情:
c++ - 范围适配器对于可视范围后面的参数是否懒惰?
C++20 标准在[range.adaptors.general]中说范围适配器
在迭代结果视图时懒惰地评估。
另一方面,在[range.filter.view]中有一条关于 filter_view 的 begin 函数的注释,提到缓存结果。那么适配器的懒惰到什么程度呢?
执行以下代码时:
是否保证适配器会尊重filter
变量的值?如果不是,我在调用什么样的行为,它在哪里声明?
c++ - 是否可以从对象创建引用视图?
为了说明我的意思:我有三个对象:
我想构建一个包含对这些对象的引用的视图,如下所示:first&、odd&、even&、odd& ... 最多 N。为了能够迭代它们:
或将视图传递给函数:
最新的 std::ranges 或 v3 范围库是否可以在不编写我自己的容器类的情况下实现这一点?