问题标签 [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++ - MakeStream::iterate() 的 Range V3 是什么?
C++ Streams有iterate()
一个初始值n
和一个函数,f()
然后首先生成,然后n
是f(n)
, f(f(n))
...
Range V3对此有什么作用?
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:
c++ - 如何使用 rangev3 范围实现平面地图
我有一个flatmap
用 C++ 实现的非常简单的函数 for std::vector
,但有人建议范围通常更好。这是基于矢量的解决方案:
也有人建议我使用迭代器,但这破坏了函数的良好可组合性:
我假设在 range-v3 世界中,我的目标是将上述内容编写为:
感觉flatmap
应该只是 , 和 的一个微不足道的组合,views::for_each
但我正在努力弄清楚如何将它们全部连接在一起。yield_from
transform
c++ - 为什么我无法在 range-v3 中获得范围的大小?
我想得到名字以“T”开头的人数:
但我得到了巨大的编译错误:
顺便说一句,我在 Visual Studio 2015 Update 1 中使用了 clang 3.7。那么,有什么问题吗?
c++ - 将 gsl::span 与 range-v3 一起使用
我尝试了一个小例子来习惯 GSL 和 range-v3 库,我想知道它们如何协同工作。我有这个玩具例子
哪个有效。但是,如果我尝试将gsl::span<int>
其用作范围,则会导致错误消息。编译器告诉我这span
并不能满足视图概念。
编译器消息:
但据我了解,它应该是因为 aspan
是一个特定的视图,甚至具有begin()
和end()
迭代器(相同类型)。
- 如果他们一起工作是可组合的,或者有什么理由不兼容,那不是很酷吗?
- 我认为这是一个来自 range-v3 中强大的“概念”使用的问题。如果该语言支持某种其他类型的概念功能,它会自动解决吗?
span
如果我想在某些(非工业)软件中同时使用这两个库,我认为目前需要一些调整。我应该改变什么才能使这些协同工作?(如果这是个好主意的话)- 这也最终使我想到了“有什么课程可以完成工作
range-v3
?”的问题。从外观、适配器或此类继承是当前告诉编译器这些概念要求的唯一方法吗?
c++ - 如何编写使用临时容器的范围管道?
我有一个带有这个签名的第三方函数:
我也有一个名为的现有潜在无限范围(范围-v3 排序)。我想创建一个映射到该范围内所有元素的管道,并将所有向量扁平化为一个包含所有元素的范围。T
src
f
本能地,我会写以下内容。
但是,这行不通,因为我们无法创建临时容器的视图。
range-v3 如何支持这样的 range 管道?
c++ - 从幻数到 int 或 long 的重载分辨率(在 range-v3 中)
在 range-v3 中,view_facade
类具有begin()
功能。
并且range_access::begin_cursor()
是这样实现的,
在我的 VS 中,看起来总是调用第二个函数。
我想知道何时将幻数(42)转换为long
调用第一个函数。
c++ - 在 getter 内扁平化嵌套 getter 结果的最佳方法
有时我的任务是查找 getter 返回的值中的某些嵌套 getter 是否具有某些属性。经典的 C++ 会是这样的:
使用范围执行此操作的最佳方法是什么?我认为这样的事情可能会奏效:
但它很长,(部分原因是您必须编写 Class:member_fn 而不是 .member_fn。有没有更短的方法来做到这一点?
c++ - range-v3 的 `partial_sum` 如何不与非拥有引用语义相矛盾?
考虑如何编写使用临时容器的范围管道?. 问题是如何T
使用给定的函数构建一个转换每个元素的视图
在遵守限制 (借用那里的最佳答案)的同时
视图是一个轻量级的包装器,它以某种自定义方式呈现底层元素序列的视图,而无需对其进行变异或复制。视图的创建和复制成本很低,并且具有非拥有引用语义。
基本上,那里的所有答案似乎都同意,由于这种限制,它不能通过视图来完成。
我不明白这如何与支持partial_sum
.
考虑以下美化整数:
它基本上只是将 an 包装int
在一个类中,将其存储在 an 中std::shared_ptr
,允许初始化、提取和添加。Wrt 非拥有引用语义,我看不出它与容器之间的根本区别,例如std::vector
.
但是,范围似乎没有问题适用partial_sum
于此:
打印出来
(美化的整数)3 在这里不是临时的吗?它当然不是原始序列的一部分。此外,显然,部分和是有状态的转换,那么范围如何保证
视图的创建和复制成本很低,并且具有非拥有引用语义。
视图与累积对象的复制成本一样高。
请注意,进一步链接它也没有问题(即,它不是一个动作):
那有什么区别呢?
完整代码
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?