问题标签 [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++ - 使用 reverse_iterator 擦除最后一个元素
最近我在维护的代码中发现了以下内容:
它尝试使用 reverse_iterator 在循环中从容器中删除最后一个元素(在这种情况下为 std::list)。关键是它看起来应该可以正常工作,但事实并非如此(由于无效的迭代器导致一些内存损坏),我想知道为什么?是否有任何限制或规则不这样做?
谢谢。
PS 为了防止对解决方案进行任何改进,我已经重写了它以使其工作。问题是为什么上面的代码不能正常工作?
c++ - map/set 迭代器不可递减是什么意思?如何使 map.rbegin()->first 工作?
我正在尝试获取 map_of_bit_to_parent 地图中的最后一个元素
但是赋值本身导致了运行时错误“map/set iterator not decrementable”
如何做这样的任务?
c++ - 如何在字符串的反转上使用正则表达式?
我想在 aregex
的反面使用 a string
。
我可以执行以下操作,但我所有的sub_match
es 都颠倒了:
[现场示例]
我想要的是出去:
同义词
是否有任何规定可以得到不被逆转的子比赛?也就是说,除了string
在它们匹配后反转 s 之外的任何规定:
编辑:
有人建议我更新问题以澄清我想要的内容:
regex
向后运行并不是string
要颠倒找到匹配项的顺序。它要复杂得多,在这里发布很有价值,但是向后运行它可以让我不需要向前看。这个问题是关于处理从. 我需要能够将它们从输入中取出,在这里。我不想为每个子比赛构建一个临时的并在其上运行。我怎样才能避免这样做。regex
match_results<string::reverse_iterator>
foo
string
reverse
c++ - 为什么使用 rbegin() 而不是 end() - 1?
我想知道使用 rbegin() 而不是 end() - 1 对 STL 容器有什么好处。
例如,你为什么要使用类似的东西:
而不是:
c++ - 仅在 C++ 标准中的说明?
exposition only在 C++ 标准中的确切含义是什么?这是否意味着标记为exposition 的私有/受保护成员仅按标准要求存在,或者它们只是实施的“建议”,根本不需要?
示例包括:
c++ - 使用带有类型擦除的 reverse_iterator
我有一个包含和管理一系列对象的类。为了避免在允许遍历它们的同时泄露这些对象的存储方式,我决定使用类型擦除boost::any_iterator
。
我定义了一个函数Begin()
and End()
in MyClass
,它简单地将容器的begin()
andend()
函数返回为my_erased_type_iterator
. 它完全按照我的意愿工作,除了我在's 的接口MyClass
中公开的功能外,没有人知道我正在使用向量来存储对象,也没有人可以访问容器。Myclass
现在,由于多种原因,我需要对对象进行反向迭代。我还需要知道反向迭代器之后的下一个元素(类似于调用std::next()
普通迭代器,这对于反向迭代器来说已经不是那么简单了),并且我可能还需要调用erase()
该反向迭代器上的函数。
所以对于我的问题:是否有一种优雅的方式来使用类型擦除和反向迭代器(以及正向和反向的 const 版本)?我应该使用前向类型擦除迭代器并向后迭代吗?我突然想到我可能以错误的方式解决这个问题,所以我愿意接受任何建议或在需要时澄清我的问题。
c++ - 检查迭代器的类型是否为 reverse_iterator
有没有办法检查作为 arg 传递给 fnc 的迭代器是否是 reverse_iterator?我可以使用任何迭代器特征函数吗?
c++ - 使用正向和反向迭代器的 C++ 映射擦除
我有这样的模板功能
现在我必须将正向和反向迭代器都作为类型名传递。两个单独的调用,一个是正向的,一个是反向的迭代器。我该怎么做呢 ?
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
应该在无效的迭代器上操作。但是为什么代码不会导致错误?
c++ - 检查 std::map 的迭代器是否指向倒数第二个元素
我正在(前向)迭代 std::map 并想查找迭代器是否指向倒数第二个元素。我似乎无法在任何地方找到如何做到这一点。
我有:
TDateFileInfoMap
std::map在哪里
我越来越:
这是否意味着我无法比较正向和反向迭代器?
如何确定前向迭代器是否指向倒数第二个元素?