问题标签 [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 投票
0 回答
322 浏览

c++ - 使用 std::valarray 和 std::slice 复制跨步数据

我正在尝试有效地复制跨度数据。考虑以下函数签名

其中 Buffer 和 Array 是

现在,根据输入的常量,我可以切片valarray并得到另一个valarrayor slice_array。切片valarray会损害性能(副本)。有没有办法使用 复制切片数据slice_array

我天真的实现

但是,此实现比仅循环输入并按索引分配值要慢。

顺便说一句,我不受 valarray 的约束,以防你有更好的想法使用什么容器

EDIT001:再想一想,Range-V3 在这种情况下可能很方便ranges::v3::view::stride,但是我找不到任何使用它的例子


EDIT002:设法使范围工作。它非常慢,比简单的 for 循环慢 20 倍。

我做错了什么?

0 投票
1 回答
186 浏览

c++ - 为什么变异 Boost.Range 算法存在 const 重载?

Boost.Range 的文档(和实现)显示了以 const refs 作为参数的变异算法的重载。例如Boost.Range 的 Sort 文档显示:

重载 2 和 4 的意义何在?当然,能够通过临时工是件好事,但随后const&使这一点变得毫无意义。Rvalue-references 将是最受欢迎的,但我的理解是它们对 Boost.Range 的支持过于侵入性,并且“推迟”到 Range.V3 的采用(如果同时它是 Boost 的一部分,那就太好了)。

0 投票
2 回答
159 浏览

c++ - 基于元素之间差异的生成器 take_while

我试图从他 1989 年的论文“Why Functional Programming Matters”中近似 Hughes 函数版本的 Newton-Raphson 平方根算法。

我感谢任何有关替代方法的建议:越多越好。我目前的方法使用 Niebler 的 range-v3。您将在代码片段中看到我创建了一个生成器来创建连续迭代并将它们插入到流中。我的问题是终止条件。我需要检测流中连续浮点数之间的差异何时低于阈值:

我不确定如何获得任何购买来比较连续元素,例如简单的前向差异。即使我这样做了,一旦我将流转换为前向差异,我将如何从生成器中恢复适当的元素?

0 投票
1 回答
3879 浏览

c++ - 在这个例子中,为什么 Range-v3 比 STL 慢?

我正在玩 Range-v3 库来执行美化find_if,并且很好奇为什么 google-benchmark 始终将我的 Range-v3 代码排名比我的std::find_if方法更差。g++ 和 clang 都使用 and 给出相同的-O3模式#define NDEBUG

我想到的具体示例如下使用 STL:

出于说明的目的,这有些人为,但通常会有一个随机生成器用于向量to_find中的变量和随机值。lengths

使用 Range-v3 库,我得到以下代码

我的问题是为什么 Range-v3 比 STL 实现慢。我知道这仍然是一个实验性库,但是代码示例可能有问题还是我滥用了范围概念?

编辑

一个示例 google-bench 驱动程序(不确定是否正确)

使用 clang 4.0.1 和

使用 gcc 6.3.1。我的机器有一个 Haswell 代处理器。两者都被编译和执行

0 投票
1 回答
92 浏览

c++ - 对具有范围的指针进行操作

我正在处理的 C++ 代码库调用一个 C API,它返回一个指向结构列表的指针和列表的长度。用范围处理这个列表的惯用方法是什么?是否有现有的适配器或创建自定义range_facade类型是处理此问题的最佳方式?

0 投票
2 回答
253 浏览

c++ - range-v3 中的 boost::counting_iterator 模拟

我想知道range-v3库是否有任何视图/实用程序提供类似于boost::counting_iterators的功能?

我一直在寻找那种东西,但似乎没有什么现成的。但是文档不完整(至少自述文件是这样建议的)所以也许我忽略了一些东西。

UPD:我真正要寻找的不仅仅是像 view::iota 这样的整数范围,而是接受任何 Incrementable 的范围视图(包装器)。Boost.CountingIterator 文档中的以下代码就是一个这样的示例:

0 投票
2 回答
525 浏览

c++ - C++ Ranges TS 包括实验路径

我正在寻找使用 C++ 范围。工作草案,范围的 C++ 扩展说:

我发现最接近的是Range-v3 - 标准库的范围算法、视图和操作,它说:

解释带有“实验性”的 Ranges TS 和没有它的 Range V3 之间的差异。在哪里可以找到带有“实验/范围”的范围?有什么意义,重要吗?这应该是控制它的编译器选项吗?

0 投票
1 回答
251 浏览

c++ - range 的递归函数(来自 range-v3)导致编译发散:为什么?

出于某种原因,下面清单中的代码导致 clang++ 和 g++ 使用 100% CPU,并填满内存,直到我的系统挂起。

请注意,这是一个演讲的玩具示例。我知道accumulate并且transform是执行此操作的标准方法,但此代码是推理链中的中间点。

rec_map_sum函数旨在实现一个递归,该递归采用整数范围和一元函数,将函数元素应用于范围,并产生映射元素的总和。

我有两个问题:(1)不同行为的原因是什么,以及(2)我应该如何制作和传递尾部视图,以便编译不会崩溃?

0 投票
2 回答
1835 浏览

c++ - 范围到向量向量的范围

假设我有一个称为 rng 的 T 范围。我可以

组现在是一系列 T 的范围。

我也可以这样做

得到 T 范围的向量。然而这

将不起作用,因为在这种情况下,ranges::action::transform() 显然返回 void 并且“传递给 action::transform 的函数的结果类型必须可写回源范围”。

那么如何将我的范围范围转换为向量的向量呢?

注意:抱歉标签不好,但我找不到 range/ranges-ts/ranges-v3 标签,我不能创建一个标签,也不能在标题中使用它。

0 投票
0 回答
744 浏览

c++ - 返回范围的函数的返回类型是什么?

该函数可以按原样编译。auto在这里工作得很好。但是这样一个函数的显式返回类型是什么?