问题标签 [reverse-iterator]
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++11 - 为什么范围解析不超出课程范围?
我正在尝试为使用双向迭代器的容器编写一个通用的反向包装器,使用std::reverse_iterator
.
但是,似乎当编译器查找begin(...)
orend(...)
时,它会说找不到匹配的函数调用,reverse_wrapper<CONTAINER>::begin(container)
因为候选者需要 0 个参数,但提供了 1 个参数。
我会猜到这是因为std::begin(myArray&)
并且std::end(myArray&)
不存在。强制他们进入std
命名空间是行不通的(无论如何也不可取)。我也尝试std::
从我的中删除前缀,reverse_wrapper
但这没有用,并且还会破坏工作std
容器的实现。
这似乎是一个范围解析问题,但我似乎无法得到修复。我究竟做错了什么?
代码:
错误:
c++ - 编译器无法在 Vector_const_iterator 和 Vector_iterator 之间“转换”,即使两者的方法都可用
我正在尝试围绕 std::vector 创建一个小型包装类来表示多项式的系数。调用者需要能够遍历系数,但我不想公开底层实现。
使用此处、此处和其他地方描述的模式,我尝试传递迭代器,如下所示:
然后这些 gf255_poly 对象被用在如下方法中:
虽然看起来很简单,但类型有问题。Visual Studio 在 for 循环中给了我这个错误,我似乎无法弄清楚:
我不明白这条消息 -我提供了返回迭代器和 const_iterators 的方法。为什么编译器不能在它们之间进行选择?
这个问题的隐含意义是,这是否是一个向调用者隐藏细节的好策略(因为他们仍然必须处理这些 std::vector 类型),我将不胜感激也能解决这个问题的答案。
c++ - 变量中的 reverse_iterator 和迭代器抽象
我有一个方法应该map
根据条件向前或向后迭代。操作本身独立于方向,因此我希望能够做这样的事情:
我知道我应该能够使用模板函数来做到这一点(对吧?),但这似乎有点过头了。
有没有一种方法可以在没有模板的情况下在一个函数中完成?也许使用<algorithm>
?
python - What's the difference between a reversed tuple and a reversed list?
Reversing a tuple and reversing a list returns objects of different type:
They have the same dir
. Neither type is a subclass of the other.
Why is that? What can one do that the other can't?
c++ - 如何使用矢量::reverse_iterator 有一个元素
我将 poll() 与 std::vector 一起使用。注册监听套接字。
并添加新的客户端套接字或连接的客户端会话做一些事情。
但是当向量元素为 1 或 2 或 4 时,reverse_iterator 无法正常工作。我不明白为什么会这样。
附上示例代码。
结果:
如果vector有5个元素,它可以正常工作。
c++ - 收藏中倒数第二名的模板;reverse_iterator 无法编译
std::map
我正在将两个现有函数转换为模板,它们检查迭代器是否是 a 中的最后一项和倒数第二项。isLastItem
模板编译,isSecondLastItem
失败并显示我不明白的错误消息。
导致错误的一行是typename T::reverse_iterator secondLastIt = collection.rbegin();
但是模板和非模板版本看起来是一样的。
编译器错误:
c++ - 在自定义容器类上反转基于范围的 for 循环
我正在尝试通过移植Sedgewick 和 Wayne的Algorithms, 4th Edition中的主要示例来提高我的 C++ 技能。我根据他们的 Java示例编写了一个通用堆栈实现。
我的堆栈工作正常,但我想提高性能,但在尝试编写反向迭代器时遇到了困难。
...
我尝试切换上面的begin
andend
成员函数,但发现扩展的 for 循环总是随着 递增++__begin
,即使__end
位于较低的内存地址。我们如何才能i
反向循环(相对于堆栈的 LIFO)?
如果有严重的错误或看起来过时的方面,请随时评论我的代码风格。我想与优秀的“现代”C++ 保持一致。
iteration - Julia中的反向迭代
昨天我有机会想以相反的顺序迭代一个集合。我找到了这个reverse
函数,但这并没有返回一个迭代器,而是实际上创建了一个反向集合。
显然,曾经有一个Reverse
迭代器,它在几年前被删除了。我还可以找到对某些东西(一种类型?)的引用Order.Reverse
,但它似乎不适用于我的问题。
该Iterators.jl
包有许多有趣的迭代模式,但显然没有反向迭代。
我当然可以使用该reverse
函数,并且在某些情况下,例如reverse(eachindex(c))
它返回一个反向迭代器,但我更喜欢通用反向迭代器。
有这样的事吗?
c++ - C++ reverse_iterator 错误
我正在尝试为我的向量使用 reverse_iterator,显然这行代码导致 3 个错误。
错误:
- 预期一个';'
- 错误 C2146 语法错误:缺少 ';' 在标识符“rit”之前
- 错误 C2065 'rit':未声明的标识符
我正在使用 Visual Studio 2015 控制台应用程序。
c++ - Gnu 的 reverse_iterator::operator-> 和代理迭代器
我已经意识到,根据 [reverse.iter.opref]中的 C++-14 标准,reserver_iterator<Iterator>::operator->
必须等同于:
而在 C++11 中(链接到同一部分)是:
std::addressof
是在 C++11 中添加的,所以可以在这里使用。我认为这可能只是后来纠正的缺陷。
但是,GLIBCXX 的反向迭代器(gcc 版本 6.2.0)的实现遵循 C++14 之前的定义:
在该句子中的使用operator&
允许代理迭代器operator&
在reference
类型上重载,以便在需要时为其迭代器提供正确的语义。所以,也许 gcc 并没有假设这reference
将是前向迭代器案例的真正参考,因为标准要求。
gcc 是否明确允许代理迭代器(毕竟它们通常可以工作)?其他编译器做同样的事情吗?