7得票1回答
为我的字符串类实现reverse_iterator(还包括rbegin()和rend()方法)

以下是我的String类的代码。我想要实现reverse_iterator、rbegin()和rend()方法。 已经粘贴了assign方法的代码。 String::reverse_iterator rbegin = str2.rbegin(); String::reverse_itera...

19得票3回答
从反向迭代器中获取向量中的索引

我知道如何通过将迭代器减去其开头迭代器来获取向量迭代器的索引。例如:vector<int>::iterator it = find(vec.begin(), vec.end(), x); size_t position = it - vec.begin(); 然而,现在我想找到向量...

14得票1回答
如何在C风格数组上使用reverse_iterator和find_if?

在使用POD元素的C数组中搜索第一个出现的元素时,可以使用std::find_if(begin, end, findit)方法。但我需要最后一次出现的位置。这个答案给了我灵感,可以使用std::reverse_iterator来实现这个目标。因此我尝试了以下代码:std::find_if(st...

10得票1回答
Julia中的反向迭代

昨天我需要对一个集合进行反向迭代。我找到了reverse函数,但它并不返回迭代器,而是创建了一个反转的集合。 显然,曾经有一个名为Reverse的迭代器,但是几年前已经被移除了。我还可以找到参考文献,其中提到了一些(类型?)叫做Order.Reverse的东西,但似乎与我的问题无关。 It...

18得票4回答
仅在C++标准中才有Exposition?

"exposition only"在C ++标准中确切意味着什么?这是否意味着标记为“仅限展览”的私有/受保护成员必须按照标准存在,还是它们只是实现的“建议”,根本不需要存在?例如:std::error_code::val_ std::wstring_convert::byte_err_str...

20得票2回答
反转元组和反转列表有什么区别?

翻转元组和翻转列表会返回不同类型的对象:>>> reversed((1,2)) <reversed at 0x7fffe802f748> >>> reversed([1,2]) <list_reverseiterator at 0x7fff...

11得票1回答
为什么移除一个列表的第一个元素会使 .rend() 失效?

使用Xcode 4.6在Mac OS X上进行了测试。 此示例代码展示了如何从std::list中删除最后一个元素,它按照我的预期工作:对list::end()的迭代器引用仍然是“结束时的1个位置”,并且仍然有效,即使删除了最后一个元素。 但第二个示例与我的直觉相反。从列表中删除第一个元素...

10得票3回答
STL迭代器在std::map::begin()之前的问题

在C++11的std::map中,是否存在某个有效的迭代器x,使得++x保证等于map::begin()?我想检测一个我刚调用的函数(我的函数)是否已经把一个迭代器从前面走出去了。该函数将恰好将迭代器向后移动一个位置。 这个答案对于库中的其余部分是否成立呢?

14得票3回答
使用std::prev(vector.begin())或std::next(vector.begin(), -1)作为反向哨兵,像some_container.rend()一样安全吗?

我编写了一些代码,它接受迭代器但需要以相反的顺序进行比较。template<class ConstBiIter> bool func(ConstBiIter seq_begin, ConstBiIter seq_end) { ConstBiIter last = std::...

11得票2回答
为什么reverse_iterator要双重定义其嵌套类型?

看起来迭代器适配器reverse_iterator在其嵌套类型中定义了大部分的重复。特别地,它公开继承自std::iterator,该类公开了iterator_category,value_type,difference_type,pointer和reference。除了iterator_ca...