列表(list)使用方法详解

list列表实现为一个双向链表。对外接口大部分与vector和deque相同,

1、创建对象 

list<T> it;//创建一个空的列表对象
list<T> it(n);//创建一个大小为N的列表对象
list<T> it(n, elem);//创建一个列表对象,包含n个elem元素
list<T> it(begin, end);//创建一个列表对象,用[begin,end)区间的值为元素赋值
list<T> it(it1);//创建一个列表对象,用另一个对象初始化

创建方法:

list<char> it1;
list<int> it2(10);
list<float> it3<10, 1.2>;
list<string> it4 < begin, end);
list<float> li5(lit3);  //拷贝构造函数

2、赋值

与vector和deque一样,list列表提供了assign()函数为列表容器赋值下面是函数的调用形式:

it.assign(n,elem);        //将n个elem元素的值赋给it
ie.assign(begin,end);        //用[begin,end)区间的值给it中的元素赋值

3、元素访问

列表是由链表实现的内存区域不连续,也没有随机访问元素的at方法,因此无法用下标法访问,但他提供了下列方法用于访问容器中的元素:

it.front();              //返回第一个元素
it.back();               //返回最后一个元素
it.begin();              //返回第一个元素的迭代器
it.end();                //  返回指向最后一个元素的迭代器

4、添加元素

it.push_back();		//在尾部插入元素
it.push_front();		//在头部插入元素
it.insert(pos, elem);		//在pos位置插入元素elem
it.insert(pos, n, elem);		//在pos位置插入n个元素elem
it.insert(pos, begin, end);			//在pos位置上插入[begin,end)区间之间的值作为元素

5、删除元素

it.pop_back();		//重尾部删除
it.pop_front();		//从头部删除元素
it.erase(pos);		//从中间删除元素
it.erase(begin, end);		//删除[begin,end)区间中的元素
it.remove(elem);		//删除与elem匹配的元素
#include<iostream>
#include<list>
using namespace std;
template<typename T>
void print(list<T> mylist)//定义print函数输出list容器中的元素
{
	//list<T>::iterator it;//创建列表迭代器
	for (list<T>::iteraotr it = mylist.begin(); it != mylist.end(); it++)
		cout << *it << " ";
	cout << endl;
}
int main()
{
	list<int> lt;
	for (int i = 0; i < 10; i++)
		lt.push_back(i + 1);
	cout << "输出list中的元素:" << endl;
	print(lt);
	lt.pop_back();
	lt.push_front(5);

	cout << "再次输出list容器中的元素:" << endl;
	print(lt);
	lt.remove(5);
	cout << "删除5之后输出list中的容器:" << endl;
	print(lt);
	return 0;
}

6、merge()函数

函数merge()可以将两个函数合并功能是把一个list对象作为参数插入到目标list容器中

lt.merge(list& lt1);

两个容器合并之后,容器中的元素按照从小到大顺序排列,而且合并之后,lt1容器变成空容器,

7、sort()函数

使容器中的元素从小到大排列,

lt.sort();
#include<list>
using namespace std;
template<typename T>
void print(list<T> mylist)
{
	list<T>::iterator it;
	for (it = mylist.begin(); it != mylist.end(); it++)
		cout << *it << " ";
	cout << endl;
}
int main()
{
	list<int> lt1, lt2;
	lt1.push_back(12);
	lt1.push_back(11);
	lt1.push_back(10);
	lt2.push_front(9);
	lt2.push_front(8);
	cout << "lt1";
	print(lt1);
	cout << "lt2";
	print(lt2);

	lt1.sort();
	cout << "排序之后lt1:";
	print(lt1);
	lt1.merge(lt2);
	cout << "lt2合并给lt1";
	print(lt1);
	system("pause");
	return 0;

}

8、splice()函数

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值