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

0 投票
1 回答
1084 浏览

c++ - 为什么删除列表的 _first_ 元素会使 `.rend()` 无效?

使用 XCode 4.6 在 Mac OS X 上测试。

此示例代码显示了std::list按我的预期删除作品的最后一个元素:迭代器引用list::end()仍然是“结束后 1”并且仍然有效,即使通过删除最后一个元素也是如此

但第二个例子与我的直觉相反。删除列表中的第一个元素changeslist::rend(),我认为这是“1 过去的开头”。

我的预期错了吗?为什么错了?为什么通过删除最后一个元素对“结束后的 1”的引用仍然有效(不应该吗?),但.rend()在删除前面的元素后对“开头()前面的 1”的引用变得无效?

0 投票
4 回答
2146 浏览

c++ - 运算符 != 对于 std::reverse_iterator c++ 不明确

我正在开发一个实现自己的迭代器的容器,我将它与 std::reverse_iterator<> 一起使用以获得反向迭代功能。我可以将反向迭代器分配给rend或rbegin,但是当我尝试访问它的任何功能(例如!=或==)时,我得到了这个:

我的迭代器运算符重载:

以及我对反向迭代器的实现

和迭代器类型定义:

我如何使用运算符

和迭代器类(const_iterator 是同一件事,但具有 const value_type)

和树类:

0 投票
0 回答
133 浏览

c++ - 在 C++11 中,如何使用“增强的 for 循环”对标准容器进行反向迭代?

下面是一个前向循环的例子std::deque使用“增强的 for 循环”:

对于给定的 STL 容器,“增强的 for 循环”的正确语法(如果可能)是什么?

0 投票
1 回答
5031 浏览

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; }

0 投票
1 回答
11429 浏览

c++ - 如何在 C 风格的数组上使用 find_if 和 reverse_iterator?

要使用 POD 元素搜索 C 数组中第一次出现的元素,可以使用std::find_if(begin, end, findit). 但我需要最后一次出现。这个答案让我想到可以用std::reverse_iterator. 因此我尝试了:

这给了我错误:

无法在赋值中将 'std::reverse_iterator< xyz* >' 转换为 'xyz*'

您是否知道如何以这种方式进行操作,或者您知道更好的解决方案?

这是代码:

以及codepad.org 上的编译器错误

0 投票
2 回答
1560 浏览

c++ - 映射 C++ 反向迭代器

it-> 指向垃圾键值

it++-> 指向正确的键值

it-> 从一开始就指向正确的键值。

请协助。

0 投票
1 回答
2117 浏览

c++ - 计算两个 std::reverse_iterator 之间的 std::distance

我有一个这样的代码片段:

我如何计算 last 和 之间的距离it2?我试过这个,但它返回零:

0 投票
3 回答
10815 浏览

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?

0 投票
1 回答
265 浏览

c++ - C++ rbegin 修改reverse_iterator的地址

我在 C++ 中有一个奇怪的问题,这段代码:

  • rQueue是一个队列,我在其中以相反的顺序迭代
  • rQueue可以随时接收消息
  • 我添加了迭代器last以避免在第 6 行重新处理接收消息
  • 在第 8 行,我保留了打印消息的位置,并且我只想打印比上一条消息更新的消息。

    我的问题:当迭代完成并在队列中添加新消息时,迭代器的值last会改变,与迭代器的值相同rstart,因此新到达的消息不会在第 6 行打印。

我不知道为什么last = rQueue.rbegin()在解锁队列后接收新元素时会修改其值。

谢谢。

0 投票
2 回答
2345 浏览

c++ - 使用反向迭代器插入到 std::list 会更改原始反向迭代器的值

在网上搜索了很多,但找不到问题的答案。

我正在使用它的 reverse_iterator 向 std::list 插入一个值。虽然插入按预期发生在适当的位置,但我注意到用于插入的原始 reverse_iterator 的值发生了变化。完全不相关的 reverse_iterator 的值也会发生变化。我已经能够在一个简单的例子中重现这个

结果

这是预期的行为。如果是这样,如何使用反向迭代器将项目插入列表(或者在这方面它没用)?