forward_list学习之迭代器操作before_begin,cbefore_begin,begin,cbegin,end,cend

本篇学习forward_list的迭代器操作:

before_begin:返回指向第一个元素之前迭代器

cbefore_begin:返回指向第一个元素之前常量迭代器

begin:返回指向起始的迭代器

cbegin:返回指向起始的常迭代器

end:返回指向末尾的迭代器

cend:返回指向末尾的常量迭代器

代码实现

#include <iostream>
#include <forward_list>

using namespace std;

void getIterator()
{
    forward_list<int> list1 = {12, 32, 34 ,53, 56, 76, 78};
    //1.before_begin返回指向第一个元素之前的迭代器
    forward_list<int>::iterator before_begin = list1.before_begin();//可以用auto
    cout << " before_begin = " << *(std::next(before_begin)) <<  endl;
    //2.cbefore_begin返回指向第一个元素之前的常量迭代器
    forward_list<int>::const_iterator cbefore_begin = list1.cbefore_begin();
    cout << " cbefore_begin = " << *(std::next(cbefore_begin)) << endl;
    //3.begin返回指向起始的迭代器
    forward_list<int>::iterator begin = list1.begin();//可以用auto
    cout << " begin = " << *begin <<  endl;
    //4.cbegin返回指向起始的迭代器
    forward_list<int>::const_iterator cbegin = list1.cbegin();//可以用auto
    cout << " cbegin = " << *cbegin <<  endl;
    *begin = 50;
    cout << " begin = " << *begin <<  endl;
    //*cbegin = 60;//常量迭代器不能修改
    //5.end返回指向末尾的迭代器
    forward_list<int>::iterator end = list1.end();//可以用auto
    auto st1 = list1.begin();
    int a = 5;
    cout << " list1的值为: ";
    while (st1 != end) {
        cout << *st1 << "\t";
        *st1 = *st1 + a;
        ++st1;
    }
    cout << endl;

    //6.cend返回指向末尾的常量迭代器
    forward_list<int>::const_iterator cend = list1.cend();//可以用auto
    auto st2 = list1.cbegin();
    int a2 = 7;
    cout << " list1的值为: ";
    while (st2 != cend) {
        cout << *st2 << "\t";
        //*st2 = *st2 + a2;//常量不能赋值
        ++st2;
    }
    cout << endl;
 }
 
 int main()
{
    getIterator();
    cout << endl;

    cout << " Hello World!" << endl;
    return 0;
}

运行结果:

注意:forward_list的迭代器都不支持自减操作

参考:

https://zh.cppreference.com/w/cpp/container/forward_list

http://www.cplusplus.com/reference/forward_list/forward_list/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值