我们已经知道可以使用下标运算符来访问string 对象的字符或vector 对象的元素,还有另外一种更通用的机制也可以实现同样的目的,这就是迭代器。
在第二部分中将要介绍,除了vector 以外,标准库还定义了其他几种容器。所有标准库容器都可以使用迭代器,但是只有少数几种才同时支持下标运算符。(严格来讲,string 对象不属于容器,但是string 对象支持很多与容器类型类似地操作)
迭代器在使用中类似指针类型,也提供了对对象的间接访问。
迭代器有有效和无效之分:有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一位置;其余情况均属无效。
3.4.1 使用迭代器
【和指针不一样的是,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员函数。
通常来说,我们并不在意迭代器准确的类型是什么,在实际使用中,利用auto 关键字基本足够。
如,这些类型都拥有名为begin 和end 的成员,其中begin 返回指向第一个元素的迭代器,end 返回指向容器“尾元素的下一位置”的迭代器。
end 成员返回的迭代器通常称作”尾后迭代器”,或简称为尾迭代器,这样的迭代器没有实际意义,通常作为标记使用。
如果容器为空,b