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

c++ - 使用 reverse_iterator 擦除最后一个元素

最近我在维护的代码中发现了以下内容:

它尝试使用 reverse_iterator 在循环中从容器中删除最后一个元素(在这种情况下为 std::list)。关键是它看起来应该可以正常工作,但事实并非如此(由于无效的迭代器导致一些内存损坏),我想知道为什么?是否有任何限制或规则不这样做?

谢谢。

PS 为了防止对解决方案进行任何改进,我已经重写了它以使其工作。问题是为什么上面的代码不能正常工作?

0 投票
1 回答
362 浏览

c++ - map/set 迭代器不可递减是什么意思?如何使 map.rbegin()->first 工作?

我正在尝试获取 map_of_bit_to_parent 地图中的最后一个元素

但是赋值本身导致了运行时错误“map/set iterator not decrementable”

如何做这样的任务?

0 投票
2 回答
5933 浏览

c++ - 如何在字符串的反转上使用正则表达式?

我想在 aregex的反面使用 a string

我可以执行以下操作,但我所有的sub_matches 都颠倒了:

[现场示例]

我想要的是出去:

同义词

是否有任何规定可以得到不被逆转的子比赛?也就是说,除了string在它们匹配后反转 s 之外的任何规定:

编辑:

有人建议我更新问题以澄清我想要的内容:

regex向后运行并不是string要颠倒找到匹配项的顺序。它要复杂得多,在这里发布很有价值,但是向后运行它可以让我不需要向前看。这个问题关于处理从. 我需要能够将它们从输入中取出,在这里。我不想为每个子比赛构建一个临时的并在其上运行。我怎样才能避免这样做。regexmatch_results<string::reverse_iterator>foostringreverse

0 投票
2 回答
14069 浏览

c++ - 为什么使用 rbegin() 而不是 end() - 1?

我想知道使用 rbegin() 而不是 end() - 1 对 STL 容器有什么好处。

例如,你为什么要使用类似的东西:

而不是:

0 投票
4 回答
897 浏览

c++ - 仅在 C++ 标准中的说明?

exposition only在 C++ 标准中的确切含义是什么?这是否意味着标记为exposition 的私有/受保护成员仅按标准要求存在,或者它们只是实施的“建议”,根本不需要?

示例包括:

0 投票
2 回答
251 浏览

c++ - 使用带有类型擦除的 reverse_iterator

我有一个包含和管理一系列对象的类。为了避免在允许遍历它们的同时泄露这些对象的存储方式,我决定使用类型擦除boost::any_iterator

我定义了一个函数Begin()and End()in MyClass,它简单地将容器的begin()andend()函数返回为my_erased_type_iterator. 它完全按照我的意愿工作,除了我在's 的接口MyClass中公开的功能外,没有人知道我正在使用向量来存储对象,也没有人可以访问容器。Myclass

现在,由于多种原因,我需要对对象进行反向迭代。我还需要知道反向迭代器之后的下一个元素(类似于调用std::next()普通迭代器,这对于反向迭代器来说已经不是那么简单了),并且我可能还需要调用erase()该反向迭代器上的函数。

所以对于我的问题:是否有一种优雅的方式来使用类型擦除和反向迭代器(以及正向和反向的 const 版本)?我应该使用前向类型擦除迭代器并向后迭代吗?我突然想到我可能以错误的方式解决这个问题,所以我愿意接受任何建议或在需要时澄清我的问题。

0 投票
2 回答
459 浏览

c++ - 检查迭代器的类型是否为 reverse_iterator

有没有办法检查作为 arg 传递给 fnc 的迭代器是否是 reverse_iterator?我可以使用任何迭代器特征函数吗?

0 投票
1 回答
335 浏览

c++ - 使用正向和反向迭代器的 C++ 映射擦除

我有这样的模板功能

现在我必须将正向和反向迭代器都作为类型名传递。两个单独的调用,一个是正向的,一个是反向的迭代器。我该怎么做呢 ?

0 投票
2 回答
2860 浏览

c++ - 使用迭代器和 pop_back 循环时出现奇异迭代器错误

给出下面的代码(比如说它的名字deque.cpp

编译g++ -std=c++11 -o deque deque.cpp,运行良好:

-D_GLIBCXX_DEBUG但如果用(编译g++ -std=c++11 -o deque_debug deque.cpp -D_GLIBCXX_DEBUG,则会出现以下错误:

看起来第二个循环++it是从一个奇异的迭代器构造的。但我认为在第一个循环之后++it,迭代器指向 2,并且pop_back()不应该使其无效。那么为什么会出现错误呢?

注意:我知道代码可以重写如下:

并且错误将消失。

但我确实想知道错误代码到底发生了什么。(这是否意味着反向迭代器实际上并不指向我期望的节点,而是指向它之后的节点?)


更新: @Barry 的回答解决了这个问题。请让我提出一个额外的相关问题:代码

预计是错误的,++it应该在无效的迭代器上操作。但是为什么代码不会导致错误?

0 投票
4 回答
2579 浏览

c++ - 检查 std::map 的迭代器是否指向倒数第二个元素

我正在(前向)迭代 std::map 并想查找迭代器是否指向倒数第二个元素。我似乎无法在任何地方找到如何做到这一点。

我有:

TDateFileInfoMapstd::map在哪里

我越来越:

这是否意味着我无法比较正向和反向迭代器?

如何确定前向迭代器是否指向倒数第二个元素?