【温故而知新】C和C++8:STL中的list容器

STL提供的list容器实现了双向链表的功能。因此,list容器中的各个元素都是双向链表中的节点,可以很方便地插入和删除元素,但是无法对容器中的元素进行随机存取,必须从容器的头部或尾部遍历。list容器在序列中的任何位置增删元素都是非常高效率的,并可以在需要的时候任意改变自身容量的大小。

1、list容器的定义:

关于如何构造一个list对象,STL提供了多种构造方法:

list<type> name;//构建一个空对象
list<type> name(size);//构建一个初始大小为size的对象
list<type> name(size, value);//构建一个初始大小为size,且初值为value的对象
list<type> name(first, last);//根据迭代器first和last构建一个有范围的对象

需要注意的是,使用list容器必须包含stl头文件:

#include <list>

2、list容器的赋值:

同vector和deque类似,list也提供了在头端和末端插入和删除对象的方法,分别是push_front(),push_back(),pop_front()和pop_back()。使用的方法同前述容器类似,不再赘述。

除此之外,list还定义一个函数,将list中的元素反向储存。

void reverse();

3、list容器的大小度量:

也同vector和deque容器类似的是,list也提供了度量容器大小的方法,分别是size(), resize()和max_size(),分别用于显示容器当前元素的个数、重新设置容器的容量、返回容器允许的最大容量。

4、返回方法:

分别有三组:front,back; begin,end; rbegin,rend;第一组方法返回的是首尾元素的引用,第二组方法返回的是首尾迭代器,而第三组返回的是末尾和头部的反向迭代器。

5、list容器中元素的访问:

由于list容器无法线性存取,因此访问list中的元素只能通过迭代器的方法;

6、插入和删除操作:

初push和pop操作外,定义了insert、erase、clear方法,分别用于在链表中插入元素、删除某个元素、清空链表。

时间: 2024-09-23 18:29:24

【温故而知新】C和C++8:STL中的list容器的相关文章

深入解析C++ STL中的常用容器_C 语言

STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的常用容器包括:顺序性容器(vector.deque.list).关联容器(map.set).容器适配器(queue.stac). 1.顺序性容器 (1)vectorvector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问.由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢

STL中的set容器的一点总结

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作.vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入.排序.删除.查找等.让用户在STL使用过程中,并不会感到陌生. 关于set,必须说明的是set关联式容器.set作为一个容器也是

【温故而知新】C和C++6:STL中的vector容器

向量容器vector是STL中提供的最常用的容器之一,提供了随机访问数组的功能,可以实现对内部元素的随机访问以及方便地在末尾插入和删除数据.vector可以十分方便地实现数据结构中数组.堆栈功能,而且不需要手动编写管理数据结构的相关函数.其定义在头文件<vector>中. 对vector中的元素进行赋值: 向vector中存放数据主要有两种方法,其一是使用push_back函数逐个在vector末尾添加数据:采用这种方法不需要对容器进行初始内存分配,可以直接从一个空的容器开始操作,但是只能依次

【温故而知新】C和C++9:STL中的set容器

1.Set/MultiSet容器的定义和创建 Set即集合类,可以在程序中按照次序来保存一组数值.在集合中,元素的关键字和数据二者相同,该集合本质上就是一个有序的排列.Multiset与set不同的是,前者其中的元素允许重复而后者不允许. Set对象采用二叉树结构储存,该结构的优点是查询效率高,并且有利于插入和删除操作. Set定义了多种实例化的方法,其中比较常用的有: set<int> s0;//定义一个空的set set<int, greater<int>> s1;

2015级C++第14周程序阅读 STL中的简单容器和迭代器

阅读并运行程序,解释程序执行得到的结果 (1) #include<iostream> #include<vector> #include<iterator> using namespace std; int main() { vector<int> ivec; int i; for(i = 0; i < 5; i++ ) ivec.push_back(i); for(i = 0; i < 5; i++) cout<<ivec[i]&l

关于STL中set容器的一些总结_C 语言

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作.vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入.排序.删除.查找等.让用户在STL使用过程中,并不会感到陌生. 关于set,必须说明的是set关联式容器.set作为一个容器也是

关于STL中vector容器的一些总结_C 语言

1.vector的简单介绍 vector作为STL提供的标准容器之一,是经常要使用的,有很重要的地位,并且使用起来也是灰常方便.vector又被称为向量,vector可以形象的描述为长度可以动态改变的数组,功能和数组较为相似.实际上更专业的描述为:vector是一个多功能的,能够操作多种数据结构和算法的模板类和函数库,vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.(注:STL的容器从实现的

[经典面试题][百度]c++实现STL中的string类

题目 请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能. 代码 /*------------------------------------- * 日期:2015-03-31 * 作者:SJF0115 * 题目: 实现string类 * 来源:百度 * 博客: ------------------------------------*/ #include <iostream> #include <cstring> us

STL中的sort和unique函数

问题描述 STL中的sort和unique函数 编了一个小程序,对STL算法中的sort()和unique()进行了测试,发现unique()输出结果不正确.程序如下: #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int array[8]={1,5,4,5,3,100,2,100}; vector<int> ivec(