问题标签 [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++ - 为什么删除列表的 _first_ 元素会使 `.rend()` 无效?
使用 XCode 4.6 在 Mac OS X 上测试。
此示例代码显示了std::list
按我的预期删除作品的最后一个元素:迭代器引用list::end()
仍然是“结束后 1”并且仍然有效,即使通过删除最后一个元素也是如此。
但第二个例子与我的直觉相反。删除列表中的第一个元素changeslist::rend()
,我认为这是“1 过去的开头”。
我的预期错了吗?为什么错了?为什么通过删除最后一个元素对“结束后的 1”的引用仍然有效(不应该吗?),但.rend()
在删除前面的元素后对“开头()前面的 1”的引用变得无效?
c++ - 运算符 != 对于 std::reverse_iterator c++ 不明确
我正在开发一个实现自己的迭代器的容器,我将它与 std::reverse_iterator<> 一起使用以获得反向迭代功能。我可以将反向迭代器分配给rend或rbegin,但是当我尝试访问它的任何功能(例如!=或==)时,我得到了这个:
我的迭代器运算符重载:
以及我对反向迭代器的实现
和迭代器类型定义:
我如何使用运算符
和迭代器类(const_iterator 是同一件事,但具有 const value_type)
和树类:
c++ - 在 C++11 中,如何使用“增强的 for 循环”对标准容器进行反向迭代?
下面是一个前向循环的例子,std::deque
使用“增强的 for 循环”:
对于给定的 STL 容器,“增强的 for 循环”的正确语法(如果可能)是什么?
c++ - 为我的字符串类实现 reverse_iterator(还有 rbegin() 和 rend() 方法)
下面是我的 String 类的代码。我想实现 reverse_iterator 和 rbegin() 和 rend() 方法。已粘贴分配方法的代码。String::reverse_iterator rbegin = str2.rbegin(); String::reverse_iterator rend = str2.rend(); for(String::reverse_iterator b = rbegin; b!= rend; ++b) { cout<<*b; }
c++ - 如何在 C 风格的数组上使用 find_if 和 reverse_iterator?
要使用 POD 元素搜索 C 数组中第一次出现的元素,可以使用std::find_if(begin, end, findit)
. 但我需要最后一次出现。这个答案让我想到可以用std::reverse_iterator
. 因此我尝试了:
这给了我错误:
无法在赋值中将 'std::reverse_iterator< xyz* >' 转换为 'xyz*'
您是否知道如何以这种方式进行操作,或者您知道更好的解决方案?
这是代码:
以及codepad.org 上的编译器错误
c++ - 映射 C++ 反向迭代器
it
-> 指向垃圾键值
it++
-> 指向正确的键值
it
-> 从一开始就指向正确的键值。
请协助。
c++ - 计算两个 std::reverse_iterator 之间的 std::distance
我有一个这样的代码片段:
我如何计算 last 和 之间的距离it2
?我试过这个,但它返回零:
c++ - STL iterator before std::map::begin()
In C++11's std::map
, is there some valid iterator x such that ++x is guaranteed to equal map::begin()
? I would like to detect if a function I just called (mine) has walked an iterator off the front of a function. The function will move the iterator exactly one position backward.
Does the answer hold for the rest of the library?
c++ - C++ rbegin 修改reverse_iterator的地址
我在 C++ 中有一个奇怪的问题,这段代码:
rQueue
是一个队列,我在其中以相反的顺序迭代rQueue
可以随时接收消息- 我添加了迭代器
last
以避免在第 6 行重新处理接收消息 在第 8 行,我保留了打印消息的位置,并且我只想打印比上一条消息更新的消息。
我的问题:当迭代完成并在队列中添加新消息时,迭代器的值
last
会改变,与迭代器的值相同rstart
,因此新到达的消息不会在第 6 行打印。
我不知道为什么last = rQueue.rbegin()
在解锁队列后接收新元素时会修改其值。
谢谢。
c++ - 使用反向迭代器插入到 std::list 会更改原始反向迭代器的值
在网上搜索了很多,但找不到问题的答案。
我正在使用它的 reverse_iterator 向 std::list 插入一个值。虽然插入按预期发生在适当的位置,但我注意到用于插入的原始 reverse_iterator 的值发生了变化。完全不相关的 reverse_iterator 的值也会发生变化。我已经能够在一个简单的例子中重现这个
结果
这是预期的行为。如果是这样,如何使用反向迭代器将项目插入列表(或者在这方面它没用)?