21得票2回答
为什么要使用rbegin()而不是end()-1?

我在想,使用rbegin()相比于end()-1对STL容器有什么好处。 例如,为什么要使用以下内容:vector<int> v; v.push_back(999); vector<int>::reverse_iterator r = v.rbegin(); vect...

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

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

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

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

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

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

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

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

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::...

13得票2回答
检查迭代器类型是否为reverse_iterator。

有没有办法检查作为参数传递给函数的迭代器是反向迭代器?是否有任何可用的迭代器特性函数可以使用?

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

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

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

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

11得票1回答
从向量中删除元素 - rbegin() vs begin()

我正在尝试解决C++中的一个问题,其中一部分需要使用rbegin()成员函数从向量中删除元素。然而,每次我编写下面提到的代码时,编译器都会报错。这里有什么问题?int main() { int a = 1, b = 2; vector<int> V = {a, ...