8、泛型程序设计与c++标准模板库2.4列表容器

列表容器主要用于存放链表,其中的链表是双向链表,可以从任意一端开始遍历。列表容器是需要按顺序访问的容器。另外,列表容器不支持随机访问迭代器,因此某些算法不能适合于列表容器。列表容器还提供了另一种操作---拼接(splicing),其作用是将一个序列中的元素插入到另一个序列中。其头文件为<list>

1、列表容器的构造函数

4种形式的构造函数:

list();//构造size()为0的列表容器

list(sizt_type n,const T& v=T());//初始化一个大小为n的列表容器,把列表容器中的每个对象初始化为T()构造的对象

list(const list& x);//按另一个列表容器x初始化列表

list(const_iterator first,const_iterator last);//从另一个支持const_iterator的容器中选取一部分来建立一个新的列表容器

2、使用列表容器

1)访问列表容器信息

有如下函数可以使用:begin()、end()、rbegin()、rend()、size()、max_size()、empty()、front()和back()等

2)向列表容器中放置元素

与向量和双端队列容器一样,也有insert函数,但是不同的是,列表容器的insert函数不会使任何迭代器或引用变得无效。

列表容器中的拼接函数splice函数就是用来重组列表的,其原型如下:

void splice(iterator it,list& x);//将列表x中的元素插入到当前列表中it之前,删除x中的元素,使之为空;注意x与当前列表不能是同一个。

void splice(iterator it,list& x,iterator first);//将first所指向的元素从列表x中移出,并插入到当前列表中it之前,x与当前列表可以是同一个,如果it==first或it==++first,则次函数什么也不做。

void splice(iterator it,list& x,iterator first,iterator last);//将范围[first,last]中的元素从列表x中移出,并插入到当前列表中it之前,x与当前列表可以是同一个,这是范围[first,last]不能包含it所指的元素

3)删除列表容器中的元素

与向量和双端队列容器一样,列表容器也提供了erase()成员函数,但是该函数仅删除指向被删除元素的迭代器和引用,另外,列表容器的成员函数remove()可以从列表容器中删除与x相等的元素,同时会减小列表容器的大小,其减小的数量等于被删除的元素个数,原型如下:

void remove(const T& x);//删除与x相同的元素

4)例子

#include<iostream>

#include<list>

using namespace std;

int main()

{  

list<int> link;//构造一个列表用于存放整数链表  

int i, key, item;  

for (i = 0; i < 10; i++)//输入10个整数依次向表头插入  

{   cin >> item;   

link.push_front(item);

 }  

cout << "List:";//输出链表

 list<int>::iterator p = link.begin();//迭代器p用于遍历链表  

while (p!=link.end())  

{  

 cout << *p << " ";  

 p++;//使p指向下一个结点  

}  

cout << endl;  

cout << "请输入一个需要删除的整数:";//输入需要删除的整数

 cin >> key;

 link.remove(key);  

cout << "List:";//输出链表  

p = link.begin();//使p重新指向表头  

while (p != link.end())//输出各结点数据,直到链表尾

 {   cout << *p << " ";   p++;  }  

getchar();  

getchar();  

cout << endl;

}

 

posted on   gary_123  阅读(135)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示