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
"
);
}
查看全文
相关阅读:
PHP 指定的 CGI 应用程序由于未返回完整的一组 HTTP 头而产生错误行为。
BPM触发事件
封装继承多态到底讲的是什么
.Net 为什么叫.Net 转载自 jerrylsxu 的博客
C# 琐碎记忆 Message
SQL Case
C# 命名规范(部分)
C# 反射
C# 日志 log 配置文件
C# 琐碎记忆 三元表达式
原文地址:https://www.cnblogs.com/rooney/p/2597012.html
最新文章
go map的定义和使用 键值对存储
go 通过赋值给 _ 来忽略序号和值
go for range 可以方便的对slice 切片或者 map 进行迭代循环
go 构造切片slice
go slice切片注意跟数组的区别
go 数组的定义和赋值
将ceph rgw网关中的对象文件拼接成文件
让命令在后台执行
清除磁盘分区后免重启重新格式化
Selenium实战(四)——unittest单元测试框架1
热门文章
自动化测试模型(数据参数化方法)以及简单的文件读取方式
Selenium实战(三)——滑动解锁+窗口截图
Selenium实战(二)——调用JavaScript之execute_script()方法
BPM学习
卸载sqlserver
安装windows服务命令
端口占用
oracle数据库数据泵导入步骤
VM 创建 COM 对象失败. 应用程序将被中断. 被召者 RC:REGDB_E_CLASSNOTREG (0x80040154)
有关php post传值大小限制
Copyright © 2011-2022 走看看