zoukankan
html css js c++ java
c++中的list用法[转]
#include
<
iostream
>
#include
<
list
>
#include
<
numeric
>
#include
<
algorithm
>
using
namespace
std;
//
创建一个list容器的实例LISTINT
typedef list
<
int
>
LISTINT;
//
创建一个list容器的实例LISTCHAR
typedef list
<
int
>
LISTCHAR;
void
main(
void
)
{
//
--------------------------
//
用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;
}
#include
<
iostream
>
#include
<
list
>
using
namespace
std;
typedef list
<
int
>
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
"
);
}
查看全文
相关阅读:
Ubuntu18.04+CUDA+CUDNN+Pytorch环境配置
VIM入门必读(转)
简述C和C++的学习历程(转)
队列
排序实现
十进制转二进制
北邮1467二叉树题引起的思考
计算机是如何启动的?
c语言字符串操作实现
北邮机试——huffman权值问题
原文地址:https://www.cnblogs.com/rooney/p/2597012.html
最新文章
git subtree用法
addEventListener() 方法
论软件工程中谁是“最重要的人”
从设计到开发的思考
程序员的方向:金钱还是理想?
element穿梭框eltransfer增加拖拽排序和shift多选checkbox功能
20100104学习笔记_去除页面的ViewState
Membership强制重置密码(备忘)_20101016
Attributes学习笔记20091116:页面按钮的二次确认之JS实现
My97日期控件My97DatePicker使用(备忘)
热门文章
昨日之事不可留
TreeView学习笔记20100812:TreeView+IFrame,设置默认页面
target属性之解说(备忘)
划词搜索实现(备忘)
20100513学习笔记:Asp.net 2.0 动态注册脚本的四种常用方法
ASP.NET 生成静态网页(C#)
置标里,Table怎么转换成IDataReader类别的?
创建一个表,设计表结构,填写表内容
获取登录IP
查看QQ号是否在线的方法
Copyright © 2011-2022 走看看