VS-C++ 系列:所有相关C++文章链接.
VS-C# 系列:所有相关C#文章链接.
bat 系列:所有相关bat文章链接.


Keil 系列:所有相关文章链接
所有内容均以最小系统调试成功;逐步提供低分源码工程下载
保证每行代码都经过验证!
如有疑惑,欢迎留言,看见即回;祝好__by Dxg_LC

序言:
1、以上链接为方便整理查看资料用;伴随博文发布更新,如果有不正确处,感谢指正
2、因本人能力有限若有不正确之处或者相关超链接失效,请于相关文章内提醒@博主;灰常感谢
3、友情提醒1,勿要《一支烟 + 一杯茶 == 一坐一下午》 身体重要,革命本钱;
4、友情提醒2,多喝热水;
5、友情提醒3,听媳妇话+多点时间陪家人;

Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

assign() 给list赋值
back() 返回最后一个元素
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
empty() 如果list是空的则返回true
end() 返回末尾的迭代器
erase() 删除一个元素
front() 返回第一个元素
get_allocator() 返回list的配置器
insert() 插入一个元素到list中
max_size() 返回list能容纳的最大元素数量
merge() 合并两个list
pop_back() 删除最后一个元素
pop_front() 删除第一个元素
push_back() 在list的末尾添加一个元素
push_front() 在list的头部添加一个元素
rbegin() 返回指向第一个元素的逆向迭代器
remove() 从list删除元素
remove_if() 按指定条件删除元素
rend() 指向list末尾的逆向迭代器
resize() 改变list的大小
reverse() 把list的元素倒转
size() 返回list中的元素个数
sort() 给list排序
splice() 合并两个list
swap() 交换两个list
unique() 删除list中重复的元素

实例一:
[cpp] view plain copy
#include
#include
#include
#include
using namespace std;

//创建一个list容器的实例LISTINT
typedef list LISTINT;
//创建一个list容器的实例LISTCHAR
typedef list LISTCHAR;

void main()
{
//用list容器处理整型数据
//用LISTINT创建一个名为listOne的list对象
LISTINT listOne;
//声明i为迭代器
LISTINT::iterator i;

//从前面向listOne容器中添加数据
listOne.push_front (2);
listOne.push_front (1);   //从后面向listOne容器中添加数据
listOne.push_back (3);
listOne.push_back (4);   //从前向后显示listOne中的数据
cout<<"listOne.begin()--- listOne.end():"<<endl;
for (i = listOne.begin(); i != listOne.end(); ++i)   cout << *i << " ";
cout << endl;   //从后向后显示listOne中的数据
LISTINT::reverse_iterator ir;
cout<<"listOne.rbegin()---listOne.rend():"<<endl;
for (ir =listOne.rbegin(); ir!=listOne.rend();ir++) {   cout << *ir << " ";
}
cout << endl;   //使用STL的accumulate(累加)算法
int result = accumulate(listOne.begin(), listOne.end(),0);
cout<<"Sum="<<result<<endl;
cout<<"------------------"<<endl;   //--------------------------
//用list容器处理字符型数据
//--------------------------   //用LISTCHAR创建一个名为listOne的list对象
LISTCHAR listTwo;
//声明i为迭代器
LISTCHAR::iterator j;   //从前面向listTwo容器中添加数据
listTwo.push_front ('A');
listTwo.push_front ('B');   //从后面向listTwo容器中添加数据
listTwo.push_back ('x');
listTwo.push_back ('y');   //从前向后显示listTwo中的数据
cout<<"listTwo.begin()---listTwo.end():"<<endl;
for (j = listTwo.begin(); j != listTwo.end(); ++j)   cout << char(*j) << " ";
cout << endl;   //使用STL的max_element算法求listTwo中的最大元素并显示
j=max_element(listTwo.begin(),listTwo.end());
cout << "The maximum element in listTwo is: "<<char(*j)<<endl;

}

结果:
listOne.begin()— listOne.end():
1 2 3 4
listOne.rbegin()—listOne.rend():
4 3 2 1
Sum=10

listTwo.begin()—listTwo.end():
B A x y
The maximum element in listTwo is: y
Press any key to continue

实例二:
[cpp] view plain copy
#include
#include

using namespace std;
typedef list INTLIST;

//从前向后显示list队列的全部元素
void put_list(INTLIST list, char *name)
{
INTLIST::iterator plist;

cout << "The contents of " << name << " : ";
for(plist = list.begin(); plist != list.end(); plist++)   cout << *plist << " ";
cout<<endl;

}

//测试list容器的功能
void main(void)
{
//list1对象初始为空
INTLIST list1;
//list2对象最初有10个值为6的元素
INTLIST list2(10,6);
//list3对象最初有3个值为6的元素
INTLIST list3(list2.begin(),–list2.end());

//声明一个名为i的双向迭代器
INTLIST::iterator i;   //从前向后显示各list对象的元素
put_list(list1,"list1");
put_list(list2,"list2");
put_list(list3,"list3");   //从list1序列后面添加两个元素
list1.push_back(2);
list1.push_back(4);
cout<<"list1.push_back(2) and list1.push_back(4):"<<endl;
put_list(list1,"list1");   //从list1序列前面添加两个元素
list1.push_front(5);
list1.push_front(7);
cout<<"list1.push_front(5) and list1.push_front(7):"<<endl;
put_list(list1,"list1");   //在list1序列中间插入数据
list1.insert(++list1.begin(),3,9);
cout<<"list1.insert(list1.begin()+1,3,9):"<<endl;
put_list(list1,"list1");   //测试引用类函数
cout<<"list1.front()="<<list1.front()<<endl;
cout<<"list1.back()="<<list1.back()<<endl;   //从list1序列的前后各移去一个元素
list1.pop_front();
list1.pop_back();
cout<<"list1.pop_front() and list1.pop_back():"<<endl;
put_list(list1,"list1");   //清除list1中的第2个元素
list1.erase(++list1.begin());
cout<<"list1.erase(++list1.begin()):"<<endl;
put_list(list1,"list1");   //对list2赋值并显示
list2.assign(8,1);
cout<<"list2.assign(8,1):"<<endl;
put_list(list2,"list2");   //显示序列的状态信息
cout<<"list1.max_size(): "<<list1.max_size()<<endl;
cout<<"list1.size(): "<<list1.size()<<endl;
cout<<"list1.empty(): "<<list1.empty()<<endl;   //list序列容器的运算
put_list(list1,"list1");
put_list(list3,"list3");
cout<<"list1>list3: "<<(list1>list3)<<endl;
cout<<"list1<list3: "<<(list1<list3)<<endl;   //对list1容器排序
list1.sort();
put_list(list1,"list1");   //结合处理
list1.splice(++list1.begin(), list3);
put_list(list1,"list1");
put_list(list3,"list3");

}

结果:
The contents of list1 :
The contents of list2 : 6 6 6 6 6 6 6 6 6 6
The contents of list3 : 6 6 6 6 6 6 6 6 6
list1.push_back(2) and list1.push_back(4):
The contents of list1 : 2 4
list1.push_front(5) and list1.push_front(7):
The contents of list1 : 7 5 2 4
list1.insert(list1.begin()+1,3,9):
The contents of list1 : 7 9 9 9 5 2 4
list1.front()=7
list1.back()=4
list1.pop_front() and list1.pop_back():
The contents of list1 : 9 9 9 5 2
list1.erase(++list1.begin()):
The contents of list1 : 9 9 5 2
list2.assign(8,1):
The contents of list2 : 1 1 1 1 1 1 1 1
list1.max_size(): 1073741823
list1.size(): 4
list1.empty(): 0
The contents of list1 : 9 9 5 2
The contents of list3 : 6 6 6 6 6 6 6 6 6
list1>list3: 1
list1<list3: 0
The contents of list1 : 2 5 9 9
The contents of list1 : 2 6 6 6 6 6 6 6 6 6 5 9 9
The contents of list3 :
Press any key to continue

转载:https://blog.csdn.net/abc882715/article/details/78783792

C++ List的用法(整理)[转载]相关推荐

  1. VC:CString用法整理(转载)

    1.CString::IsEmpty BOOL IsEmpty( ) const; 返回值:如果CString 对象的长度为0,则返回非零值:否则返回0. 说明:此成员函数用来测试一个CString ...

  2. Linux中find用法整理

    一.Linux中find常见用法示例 ·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} /; ...

  3. bitset用法整理

    转载自:http://blog.csdn.net/e6894853/article/details/7925846 在项目中需要使用到10进制48位的数字按二进制由高到低解释,然后按每一位是0还是1来 ...

  4. c++:bitset用法整理

    本篇文章转载至https://blog.csdn.net/e6894853/article/details/7925846 在项目中需要使用到10进制48位的数字按二进制由高到低解释,然后按每一位是0 ...

  5. Google Guava 库用法整理

    http://macrochen.iteye.com/blog/737058 参考: http://codemunchies.com/2009/10/beautiful-code-with-googl ...

  6. 5. 深入研究 UCenter API 之 MVC 网站下的用法(转载)

    1.  深入研究 UCenter API 之 开篇 (转载) 2.  深入研究 UCenter API 之 通讯原理(转载) 3.  深入研究 UCenter API 之 加密与解密(转载) 4.  ...

  7. python数据可视化工具 pandas_Pandas数据可视化工具——Seaborn用法整理(下)

    在前一篇文章 Pandas数据可视化工具--Seaborn用法整理(上),我们了解了如何使用这些Seaborn代码绘制分布图和分类图.在本文中,我们将继续讨论Seaborn提供的一些其他以绘制不同类型 ...

  8. 《编码规范和测试方法——C/C++版》作业 ·002——函数返回地址、static关键词用法整理

    文章目录 一.函数返回地址的情形 1.函数返回值为指针 二.static关键字用法整理 1.static全局变量 2.static局部变量 3.static函数 4.类的static成员数据 5.类的 ...

  9. pandas 作图 统计_Pandas数据可视化工具——Seaborn用法整理(下)

    本科数学,编程几乎零基础(之前只学过matlab)今年年初开始学习Python数据挖掘,找到了一个很好的平台--BigQuant,省去了安装Python和安装各种库的烦恼.我最近在开始了解机器学习,B ...

  10. bitset 用法整理

    在项目中需要使用到10进制48位的数字按二进制由高到低解释,然后按每一位是0还是1来判断报警或错误状态. 所以,在Linux中的C++下需要用到二进制转换以及按位解析.收集到了一些资料,自己保存一下啊 ...

最新文章

  1. Ubuntu下SSH设置
  2. 17、加密解密技术介绍
  3. Python之sklearn:GridSearchCV()和fit()函数的简介、具体案例、使用方法之详细攻略
  4. shell (check return of each line)(PIPESTATUS[@])and sudoer
  5. iOS,Objective-C Runtime
  6. iOS开发-平台使用TestFlight进行Beta测试
  7. 【Verilog HDL】深入理解部分语法规则的本质
  8. C语言深度剖析书籍学习记录 第一章 关键字
  9. ASP.Net学习笔记007--ASP.Net Input版自增
  10. Zygo保存zxg(Zemax File)文件(光学领域知道Zygo的一定要看)
  11. 南信大校园网稳定|多拨|软路由|硬路由|保姆级教学|一步到位|openwrt|pandavan老毛子
  12. 不要奇怪 XP震网病毒缺陷或为2014最大软件漏洞
  13. windows安装配置libtorrent
  14. 彻底解决idea maven依赖报红报错问题
  15. 抓紧收藏,9大短视频自媒体工具,帮你快速月入过万,不真人出镜
  16. Ios端直播商城源码开发之实现全屏直播功能
  17. TwinCAT3 ADS通讯笔记
  18. 假面舞会[NOI2008]
  19. 鸿蒙系统内存管理,嵌入式系统内存管理-鸿蒙HarmonyOS技术社区-鸿蒙官方战略合作伙伴-51CTO.COM...
  20. java无锁数据结构,无锁有序链表的实现

热门文章

  1. anaconda + tensorflow +ubuntu 超级菜鸟,大家多指正【转】
  2. 我的springboot+vue前后端分离权限脚手架
  3. 分布式配置中心-Disconf入门指南
  4. horizontalscrollview+textview简单版
  5. Win7性能优化:解决多核处理器兼容问题
  6. Java数据结构与算法(3) - ch04栈(栈和转置)
  7. ML三(人工神经网络)
  8. Oracle单实例数据库迁移到Oracle RAC 环境之(3)--主备库Switchover
  9. linux7.2 网卡设置,CentOS 7.2网络配置
  10. 如何验证 nginx.conf 是否配置正确