问题标签 [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.

0 投票
1 回答
133 浏览

c++ - MakeStream::iterate() 的 Range V3 是什么?

C++ Streamsiterate()一个初始值n和一个函数,f()然后首先生成,然后nf(n), f(f(n))...

Range V3对此有什么作用?

0 投票
1 回答
480 浏览

c++ - Declaring global const objects in a header file

In Eric Niebler's range-v3 library, he provides a lot of headers that each have their own global function object. They are all declared in the same way. He provides a class template static_const:

And then every function object of type F is declared as:

What are the advantages of introducing the object through the static_const template and in an unnamed namespace, as opposed to just writing:

0 投票
3 回答
1535 浏览

c++ - 如何使用 rangev3 范围实现平面地图

我有一个flatmap用 C++ 实现的非常简单的函数 for std::vector,但有人建议范围通常更好。这是基于矢量的解决方案:

也有人建议我使用迭代器,但这破坏了函数的良好可组合性:

我假设在 range-v3 世界中,我的目标是将上述内容编写为:

感觉flatmap应该只是 , 和 的一个微不足道的组合,views::for_each但我正在努力弄清楚如何将它们全部连接在一起。yield_fromtransform

0 投票
2 回答
1792 浏览

c++ - 为什么我无法在 range-v3 中获得范围的大小?

我想得到名字以“T”开头的人数:

但我得到了巨大的编译错误:

顺便说一句,我在 Visual Studio 2015 Update 1 中使用了 clang 3.7。那么,有什么问题吗?

0 投票
1 回答
1511 浏览

c++ - 将 gsl::span 与 range-v3 一起使用

我尝试了一个小例子来习惯 GSL 和 range-v3 库,我想知道它们如何协同工作。我有这个玩具例子

哪个有效。但是,如果我尝试将gsl::span<int>其用作范围,则会导致错误消息。编译器告诉我这span并不能满足视图概念。

编译器消息:

但据我了解,它应该是因为 aspan 一个特定的视图,甚至具有begin()end()迭代器(相同类型)。

  • 如果他们一起工作是可组合的,或者有什么理由不兼容,那不是很酷吗?
  • 我认为这是一个来自 range-v3 中强大的“概念”使用的问题。如果该语言支持某种其他类型的概念功能,它会自动解决吗?
  • span如果我想在某些(非工业)软件中同时使用这两个库,我认为目前需要一些调整。我应该改变什么才能使这些协同工作?(如果这是个好主意的话)
  • 这也最终使我想到了“有什么课程可以完成工作range-v3?”的问题。从外观、适配器或此类继承是当前告诉编译器这些概念要求的唯一方法吗?
0 投票
6 回答
5182 浏览

c++ - 如何编写使用临时容器的范围管道?

我有一个带有这个签名的第三方函数:

我也有一个名为的现有潜在无限范围(范围-v3 排序)。我想创建一个映射到该范围内所有元素的管道,并将所有向量扁平化为一个包含所有元素的范围。Tsrcf

本能地,我会写以下内容。

但是,这行不通,因为我们无法创建临时容器的视图。

range-v3 如何支持这样的 range 管道?

0 投票
3 回答
180 浏览

c++ - 从幻数到 int 或 long 的重载分辨率(在 range-v3 中)

在 range-v3 中,view_facade类具有begin()功能。

并且range_access::begin_cursor()是这样实现的,

在我的 VS 中,看起来总是调用第二个函数。

我想知道何时将幻数(42)转换为long调用第一个函数。

0 投票
1 回答
156 浏览

c++ - 在 getter 内扁平化嵌套 getter 结果的最佳方法

有时我的任务是查找 getter 返回的值中的某些嵌套 getter 是否具有某些属性。经典的 C++ 会是这样的:

使用范围执行此操作的最佳方法是什么?我认为这样的事情可能会奏效:

但它很长,(部分原因是您必须编写 Class:member_fn 而不是 .member_fn。有没有更短的方法来做到这一点?

0 投票
1 回答
191 浏览

c++ - range-v3 的 `partial_sum` 如何不与非拥有引用语义相矛盾?

考虑如何编写使用临时容器的范围管道?. 问题是如何T使用给定的函数构建一个转换每个元素的视图

在遵守限制 (借用那里的最佳答案)的同时

视图是一个轻量级的包装器,它以某种自定义方式呈现底层元素序列的视图,而无需对其进行变异或复制。视图的创建和复制成本很低,并且具有非拥有引用语义。

基本上,那里的所有答案似乎都同意,由于这种限制,它不能通过视图来完成。


我不明白这如何与支持partial_sum.

考虑以下美化整数:

它基本上只是将 an 包装int在一个类中,将其存储在 an 中std::shared_ptr,允许初始化、提取和添加。Wrt 非拥有引用语义,我看不出它与容器之间的根本区别,例如std::vector.

但是,范围似乎没有问题适用partial_sum于此:

打印出来

(美化的整数)3 在这里不是临时的吗?它当然不是原始序列的一部分。此外,显然,部分和是有状态的转换,那么范围如何保证

视图的创建和复制成本很低,并且具有非拥有引用语义。

视图与累积对象的复制成本一样高。

请注意,进一步链接它也没有问题(即,它不是一个动作):

那有什么区别呢?


完整代码

0 投票
1 回答
545 浏览

c++ - Ranges TS breaking changes?

It is said that the injection of the Ranges TS into the std namespace would cause a number of breaking changes to the standard library (e.g. this link). Does anybody know what those changes are?