begin将an返回iterator到序列容器中的第一个元素。
end返回iterator末尾的第一个元素。
如果矢量对象const,无论是begin和end返回const_iterator。如果const_iterator即使向量不返回,也要返回const,则可以使用cbegin和cend。
例:
#include <vector> #include <iostream> int main() { std::vector<int> v = { 1, 2, 3, 4, 5 }; //使用initializer_list初始化向量 for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) { std::cout << *it << " "; } return 0; }
输出:
1 2 3 4 5
迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针。举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历。有这么几种迭代器如下: 迭代器 描述 input_iterator 提供读功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。 output_iterator 提供写功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。 forwar
我有一个自定义模板类- 我想要一个常量迭代器开始于myClass,常量迭代器结束于myClass,它能够迭代myClass矩阵中的对象T,我正在努力创建这样的东西。 在我看来,我想把矩阵上的所有对象T聚集到某个局部一维向量,然后返回迭代器。从这个向量或迭代器开始。结束这个向量 此外,我希望能够支持for-each循环如下: 谢谢!
此代码未编译,因为被视为
问题 你想反方向迭代一个序列 解决方案 使用内置的 reversed() 函数,比如: >>> a = [1, 2, 3, 4] >>> for x in reversed(a): ... print(x) ... 4 3 2 1 反向迭代仅仅当对象的大小可预先确定或者对象实现了 __reversed__() 的特殊方法时才能生效。 如果两者都不符合,那你必须先将对象转换为一个列表才行,比
我有两个长度不同的< code>Vec,例如: 我想成对迭代它们,打印: 我可以使用< code>Iterator::zip来获得在< code>xs和< code>ys中具有匹配元素的对: 但是对于“不匹配”位,我需要复杂的代码来检查长度并从其余部分中提取一部分。 我想要一个完全基于迭代器的解决方案,所以我尝试了: 这是不正确的,因为第一个循环跳过了在另一个列表中没有匹配的第一个元素(x=4)。
迭代器模式(Iterator Pattern) 目前已经是一个没落的模式, 基本上没人会单独写一个迭代器, 除非是产品性质的开发, 其定义如下: 它提供一种方法访问一个容器对象中各个元素, 而又不需暴露该对象的内部细节。