问题标签 [range-v3]
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++ - Range-v3 中 Readable 使用的 CommonReference 有什么作用?
我发现这typename gsl::span<const gsl::byte>::const_iterator
不满足Readable
range-v3 中的概念。在浏览了这个概念之后,我发现了这个约束:
ranges::common_reference_t
const
从 the中删除value_type
,然后它们就不一样了。
CommonReference
约束是什么意思?为什么要Readable
满足他们?
c++ - 如何从开始和结束迭代器创建范围?
我有一个具有获取开始和结束迭代器功能的对象:
因为它们没有命名begin
and end
,所以我不能将我的对象直接传递给 range-v3 中的函数。
是否有一个简单的包装器可以让这个对象与 range-v3 库一起使用?
例如:
c++ - 为什么范围 v3 算法不能通过管道传输?
似乎范围 v3 中的算法不可链接,即:
...必须写成功能风格:
这是一个设计选择,只有返回新范围/容器的算法/动作是可管道的?
c++ - 要求用户制作的容器符合 range-v3
我在徘徊,用户定义的容器与 Range-v3(算法......)一起使用的新要求是什么?
例如,我们需要在标准意义上改变我们的设计(成员类型,成员函数......)?如何遵守 Range-v3 算法的概念?我们需要提供哪些成员函数?迭代器有哪些变化?
迭代器/开始/结束的替代品是什么?
如果有人可以提供规范的容器实现,那就太好了。
Range-v3 带来了哪些新的想法/观念?什么是新的 C++ 编码方式?
c++ - 如何正确转发 Invocable 类型
我真的很喜欢使用cmcstl2,这是 Ranges TS 的一个实现。我特别喜欢每个 STL 算法的可选投影。Invocable
类型像这样被转发(嗯......或不):(min_element.hpp)
作为参考:range-v3库是这样实现的:(min_element.hpp)
现在我试图理解这两种方法的区别和推理。我为什么要按Invocable
值取类型?为什么我不应该对这些类型使用完美转发?
与第一种方法相比,我更了解第二种方法,因为我了解按值获取接收器参数的方法。
c++ - 为什么 range-v3 yield 需要默认构造函数
我试图理解,出于什么原因,yield 系列函数要求该类是默认可构造的?
在以下示例中,仅当 CNum 具有默认构造函数时,才会编译 vnums1 行。vnums2 行不需要默认构造函数。
我正在使用 Visual Studio 2017 和 Range-V3-VS2015。谢谢!
c++ - 将范围拆分为重叠范围
我尝试使用 Ranges-V3 库将值容器分割成一系列范围,以便相邻范围共享边界元素。
考虑以下:
我想根据区域是否满足两个标准将范围划分为重叠的子范围:
- 元素的值是否为零
- or 与一个或多个值为 0 的元素相邻
期望的输出:
我的尝试:
输出:
我不知道该怎么做
- “插入”从 3 到 6 的范围
- “追加”从 8 到 9 的范围
c++ - RangeV3:为什么不对特定容器专门化算法?
“旧” STL 不允许 saystd::find
专门使用std::set
orstd::unordered_map
等的成员函数。它不能,因为前者使用迭代器,后者需要容器,并且无法从迭代器获取容器。甚至还有一个问题(专业化 STL 算法,以便它们在可用时自动调用有效的容器成员函数)。
由于 Range V3 最终将焦点从迭代器转移到了范围,人们可以期望 finallystd::find
会自动专门化为std::set
,这反过来又使得std::none_of_equal
(如果它被采用)做你想做的事情,等等。
但是,阅读它当前的实现,我看不到这样的功能。为什么?