c++专门为一些容器vector以及string等设置了一种很好用的访问方法,就是迭代器。
迭代器是一种类似指针的操作,迭代器支持从一个位置转换到另一个位置,以及对于对象的间接访问。
使用迭代器
用begin以及end方法就可以得到一个容器的迭代器,比如对于string类型的话,string::iterator p = str.begin()就可以得到一个strng对象的指向头部的迭代器,begin指向的是容器头部的,而en返回的是指向容器的最后一个的下一个的,这一点要注意。如果迭代器是空的话,那么end以及begin返回的就都是同一个迭代器。
迭代器就像指针一样,支持指针的所有操作,*p就代表p迭代器指向的元素,迭代器可以执行比较以及自加自减操作。
遍历一个容器的方法就是(以string容器为例)
string::itrator p = str.begin();
string::itrator pe = str.end();
while(p!=pe)
{
cout<<*p;
p++;
}
如果不希望遍历的时候改变容器的值的话,那么就用const关键字声明迭代器。可以是string::const_iterator或者是string::const itrator两种类型。另外也可以用cbegin或者cend函数返回常量的迭代器。
迭代器是一种类似指针的操作,迭代器支持从一个位置转换到另一个位置,以及对于对象的间接访问。
使用迭代器
用begin以及end方法就可以得到一个容器的迭代器,比如对于string类型的话,string::iterator p = str.begin()就可以得到一个strng对象的指向头部的迭代器,begin指向的是容器头部的,而en返回的是指向容器的最后一个的下一个的,这一点要注意。如果迭代器是空的话,那么end以及begin返回的就都是同一个迭代器。
迭代器就像指针一样,支持指针的所有操作,*p就代表p迭代器指向的元素,迭代器可以执行比较以及自加自减操作。
遍历一个容器的方法就是(以string容器为例)
string::itrator p = str.begin();
string::itrator pe = str.end();
while(p!=pe)
{
cout<<*p;
p++;
}
如果不希望遍历的时候改变容器的值的话,那么就用const关键字声明迭代器。可以是string::const_iterator或者是string::const itrator两种类型。另外也可以用cbegin或者cend函数返回常量的迭代器。