序列容器list

本文通过一个C++示例展示了如何使用list容器存储和操作字符串。程序首先创建了一个list<string>对象,并插入了两个元素。接着,通过定义迭代器遍历并打印容器中的所有元素,然后调用reverse()函数反转list内容,并再次打印。示例强调了迭代器在遍历双向链表list中的作用,以及list高效插入的特点。

list 双向链表

list

#include <iostream>
#include <string>
#include <list>

using namespace std;

void print(list<string> &str)
{
    list< string >::iterator iter;
    for(iter = str.begin(); iter != str.end(); iter++)
        cout<< *iter <<endl;

    cout << endl;
}

int main()
{
    list<string> str;

    str.insert(str.begin(), "A");
    str.insert(str.begin(), "B");

    print(str);

    cout << "**************" <<endl;
    str.reverse();
    print(str);

    return 0;
}

在这里插入图片描述

本例中,我们定义了一个 list 容器 string 类型的实例 str,之后我们先在容器中添加了 6 个 string 类型元素,为了遍历 str 容器,我们定义了一个 iter 迭代器。通常每定义一个容器,就会有一个与容器数据类型相关的迭代器,本例中定义了 str 容器,则它对应的迭代器有:

list <string>::iterator
list<string>::const_iterator

如果我们不需要修改容器中的元素,仅仅只是进行访问的话,则可以定义为 const_iterator。

为了从头到尾遍历容器,我们先将迭代器指向 str.begin(),for 循环的结束条件是 str.end(),每次运行一遍循环体中的内容,迭代器自增一次,相当于指向下一个元素。我们之所以能够直接使用自增运算符,那是因为在容器类中已经对自增操作符进行了重载。

当我们需要获得当前迭代器所指的元素时,可以用取址操作符“*”来操作迭代器,“*iter”就为迭代器所指向的元素。此程序中之所以没有按照 vector 和 deque 的方式,以下标进行访问容器中的元素,是因为 list 并没有重载下标操作符,因而不能根据下标进行直接访问。

在主函数中我们调用了 reverse() 函数,对容器中的元素进行翻转,然后再次打印容器中的元素。

list 容器是一个双向链表,因此在容器中的任何位置插入元素,都不需要移动其它元素,因此执行效率是稳定的。

reference

微学苑 C++ list

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静思心远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值