迭代器 iterator

迭代器 iterator

迭代器遍历 Vector

vector<int> vec = {100, 200, 300};
vector<int>::iterator iter;  //  定义迭代器

//  迭代器 begin() / end(),反向迭代器 rbegin() / rend()
int main()
{
    vector<int> vec = {100, 200, 300};
    vector<int>::iterator iter; //  定义迭代器
    //  如果容器中有元素,则 begin 返回的迭代器,指向的是容器中的第一个元素 ==> 相当于 iter 执行了 vec[0]
    iter = vec.begin();
    //  end 返回的迭代器指向的并不是末端元素,而是末端元素的后边,类似与一个标记
    iter = vec.end();
    //  如果一个容器为空,那么 begin() 和 end() 返回的迭代器相同
    return 0;
}

正逆遍历

int main()
{
    vector<int> vec = {100, 200, 300};
    //  正向遍历:iterator
    for(vector<int>::iterator iter = vec.begin(); iter != vec.end(); iter++){
        cout << *iter << endl;
    }
    //  逆向遍历:reverse_iterator
    for(vector<int>::reverse_iterator riter = vec.rbegin(); riter != vec.rend(); riter++){
        cout << *riter << endl;
    }
    return 0;
}

将对象放入容器中

vector<student> stu;
student mystu;
mystu.num = 100;
stu.push_back(mystu);  //  将对象放入到容器中
vector<student>::iterator iter;
iter = stu.begin();  //  指向第一个元素
cout << (*iter).num << endl;
cout << iter->num << endl;

const_iterator 迭代器

表示值不能改变的意思

  • 这个迭代器指向的元素的值不能改变
  • 而不是表示这个迭代器本身不能改变,也就是说,迭代器本身是可以不断指向下一个元素
  • 只能从容器中读取元素,不能通过这个迭代器改写容器中的元素,感觉更像是常量指针
posted @ 2024-09-27 00:30  爱新觉罗LQ  阅读(3)  评论(0编辑  收藏  举报