list(链表)常用成员函数_std::list<int> 成员函数详解-程序员宅基地

技术标签: list  数据结构  

在刷题过程中遇到了list中常用的函数,所以总结下来, 希望对大家有用。

list头文件:

#include <list>
using namespace std;

list采用链式存储方法,所以list不能随机存取,但是在list插入和删除元素高效。

list的常用接口:

判空: empty
语法:

 bool empty();  

empty()函数返回真(true)如果链表为空,否则返回假。例如:

list<int> the_list;    
for( int i = 0; i < 10; i++ )        
the_list.push_back( i );       
 while( !the_list.empty() ) {        
 cout << the_list.front() << endl;        	
 the_list.pop_front();      
 }  

获取list中元素的个数 size
语法:

  size_type size();  

size()函数返回list中元素的数量。

增 push_back push_front insert

在链表的尾部插入元素: push_back
push_back

语法:

 void push_back( const TYPE &val );  
push_back()将val连接到链表的最后。例如:

list<int> the_list;
       for( int i = 0; i < 10; i++ ){
             the_list.push_back( i );

}

在链表的首部插入元素: push_front
push_front

语法:

 void push_front( const TYPE &val );  
push_front()函数将val连接到链表的头部。

在链表的指定位置上插入元素: insert
insert

语法:

 iterator insert( iterator pos, const TYPE &val );  
   void insert( iterator pos, size_type num, const TYPE &val );   
    void insert( iterator pos, input_iterator start, input_iterator end );  

insert()插入元素val到位置pos,或者插入num个元素val到pos之前,或者插入start到end之间的元素到pos的位置。返回值是一个迭代器,指向被插入的元素。

删 pop_back pop_front erase clear

删除链表的最后一个元素,但不返回链表最后一个元素的值: pop_back

pop_back
语法:

void pop_back();  
pop_back()函数删除链表的最后一个元素。

删除链表首部的元素,但不返回链表第一个元素的值: pop_front
pop_front
语法:

void pop_front();  
pop_front()函数删除链表的第一个元素。

删除链表指定位置上的元素: erase

erase
语法:

 iterator erase( iterator pos );   
  iterator erase( iterator start, iterator end );  

erase()函数删除以pos指示位置的元素, 或者删除start和end之间的元素。 返回值是一个迭代器,指向最后一个被删除元素的下一个元素。

删除链表中的所有元素 clear

clear
语法:

 void clear();  
clear()函数删除list的所有元素。

获取链表最后一个元素back和第一个元素front

获取list的最后一个元素,但不删除最后一个元素:
back
语法:

 reference back();  
back()函数返回一个引用,指向list的最后一个元素。

获取list的第一个元素,但不删除第一个元素:
front
语法:

reference front();  

front()函数返回一个引用,指向链表的第一个元素。

list<int> the_list;      
for( int i = 0; i < 10; i++ )        
the_list.push_back( i );        
while( !the_list.empty() ) {        
cout << the_list.front() << endl;        the_list.pop_front();      }  

遍历链表 begin end
获取指向list第一个元素的迭代器:

begin
语法:

iterator begin();  

begin()函数返回一个迭代器,指向list的第一个元素。例如,

// 创建一个元素类型是字符的链表      
list<char> charList;      
for( int i=0; i < 10; i++ )        
charList.push_front( i + 65 );  
// 显示这个链表     
 list<char>::iterator theIterator;      
 for( theIterator = charList.begin();
  theIterator != charList.end(); 
  theIterator++ )        
  cout << *theIterator;

获取指向list末尾的迭代器:
end

语法:

  iterator end();  

end()函数返回一个迭代器,指向链表的末尾。

链表合并 merge
merge
语法:

 void merge( list &lst );    
 void merge( list &lst, Comp compfunction );  

merge()函数把自己和lst链表连接在一起,产生一个整齐排列的组合链表。如果指定compfunction,则将指定函数作为比较的依据。

将list中的元素逆序 reverse
reverse
语法:

  void reverse();  

reverse()函数把list所有元素倒转。

对list中的元素进行排序 sort

排序(sort)
语法:

void sort();    
void sort( Comp compfunction );  

sort()函数为链表排序,默认是升序。如果指定compfunction的话,就采用指定函数来判定两个元素的大小。

修改链表的长度 resize

修改链表的大小,多余元素用val填充: resize

resize
语法:

 void resize( size_type num, TYPE val );  

resize()函数把list的大小改变到num。被加入的多余的元素都被赋值为val

删除链表中的重复元素 unique
unique
语法:

void unique();   
 void unique( BinPred pr );  

unique()函数删除链表中所有重复的元素。如果指定pr,则使用pr来判定是否删除

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42187898/article/details/93501646

智能推荐

从James Gosling看有多少人是因为薪资低离开公司-程序员宅基地

文章浏览阅读766次。谷歌从来是不缺牛人的地方,现在又有牛人加盟。据国外媒体报道,被中国程序员戏称为“高司令”的Java创始人詹姆斯·高斯林(James Gosling)周一发表博客文章称,他已经加入了谷歌公司。[img]http://dl.iteye.com/upload/attachment/450423/cf25e4e1-9232-3acd-aabf-b9272e91cfb5.jpg[/img]...

RocketMQ 从哪入手_rocketmq 存在哪里-程序员宅基地

文章浏览阅读172次。RocketMQ 从哪入手1.MQ的优缺点?当前常用MQ的对比?MQ的优缺点当前常用MQ的对比2.自己的学习方法(菜鸡)3.自己部署的步骤、遇到的一些问题,以及解决方案4.集群的搭建方式(以双主双从为例子)5.RocketMQ中NameServer相关部分源码解析1.MQ的优缺点?当前常用MQ的对比?MQ的优缺点优点: 解耦 削峰 分发(数据)缺点: 系统可用性降低 系统复杂度提高(重复消费,消息丢失,顺序消费) 一致性问题当前常用MQ的对比 现在主流MQ主要有三种 : Rock_rocketmq 存在哪里

flash白板功能_flash 白板-程序员宅基地

文章浏览阅读3.5k次。Flash Communication Server相关Flash Communication Server的十大功能作者: Kyle 11/21/02 内容: 1.建立截然不同的应用程序透过Macromedia Flash Communication Server ,您可以在网站内容中建立和整合出全新型态的互动功能和用户体验。您可以轻易地在网站和应用程序中,增加像聊天室、串流视讯、多_flash 白板

MySQL入门相关命令语句(命令行操作)建库、建表以及表中字段操作等相关命令_数据库怎么定义表的字段命令行-程序员宅基地

文章浏览阅读302次。1、首先,为了保证数据库的安全性,我们在安装数据库的时候都会设置密码,我们根据自己的设置进行身份验证,连接本地数据库服务器:方式一:如果你想要看到你自己输入的密码,直接在p后面输入即可,反之直接回车进行输入mysql -uroot -p方式二:如果仅仅是访问自己电脑上的mysql建议用方式一,比较简单,但是如果你想要访问其他电脑上配置的mysql服务,就需要在-h后输入该电脑的ip,-P后..._数据库怎么定义表的字段命令行

我要犯的错误太多了,时间太少了……捕获StandardError和StandardOutput-程序员宅基地

文章浏览阅读432次。This struck me as particularly interesting, because it's one of those "doh!" things that is simultaneously completely obvious after the fact but not obvious on a cursory glance if you're not paying at...

JS 实现加载效果_js加载效果-程序员宅基地

文章浏览阅读727次。<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>加载效果</title> <style type="text/css"> * { padding: 0; margin: 0; } #progressbar { position: fixed; left: 0; right: 0;._js加载效果

随便推点

用Python玩转PPT!-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏29次。作者 |陈熹来源| 早起Python今天本文将基于第三方库pptx,详细讲解如何使用Python操作Office全家桶最后一位——PPT。安装pptx是一个非标准库,需要在命令行中安..._python ai ppt

Python3.8安装dlib(anaconda虚拟环境下)_在pytorch中虚拟环境中怎么安装dlip-程序员宅基地

文章浏览阅读3.2k次,点赞22次,收藏24次。anaconda 安装dlib, 附带下载地址_在pytorch中虚拟环境中怎么安装dlip

django-redis Error 111 connecting to 127.0.0.1:6379.-程序员宅基地

文章浏览阅读1.1k次。在 setting.py 中设置完了 django-redis 之后,在 view.py 中使用出现 error:Error 111 connecting to 127.0.0.1:6379.-> 参考出现这个问题是因为服务器中的 redis sercive 没找到或者没开启如果没安装服务器的话,安装 redis-serverUbuntu: sudo apt-get in..._sentry.exceptions.invalidconfiguration: error 111 connecting to 127.0.0.1:63

OpenGL基础-程序员宅基地

文章浏览阅读164次。20' 抛物面,法向量 10' 抛物面 #define DELTA 0.1 #define PI2 2*3.14159 double parabolicSurf[36][10][3]; void MakeParabolicSurface() { for (int a = 0; a < 36; a++) { for (int ..._在自由端约束条件下计算hermite样条曲线

linux文件系统查看目录,Linux文件系统目录结构-程序员宅基地

文章浏览阅读284次。8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?本文以CentOS系统为例,但同样适用于Linux的其他发行版。不需要纠结于具体的版本,了解设计意图即可。本文随时更新。除勘误外,不另做批注。圆型节点代指目录,方型节点代指文件。图中省去了很多不常用的目录与文件。稍后单独讲/proc目录与/var目录。Linux将整个文件系统看做一棵树,这棵树的树根叫做根文件系统,用”/..._查看/user/root/txtdir目录结构

将华氏温度转换成摄氏温度_android studio怎么将华氏温度转换为摄氏度-程序员宅基地

文章浏览阅读3.4k次。写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32其中C表示摄氏温度,F表示华氏温度。程序的输入是一个整数,表示华氏温度。输出对应的摄氏温度,也是一个整数。提示,为了把计算结果的浮点数转换成整数,需要使用下面的表达式: (int)x;其中x是要转换的那个浮点数。输入格式:_android studio怎么将华氏温度转换为摄氏度