C++序列容器 之 list 操作

本文通过一个C++程序示例,详细介绍了标准模板库(STL)中list容器的各种操作方法,包括元素的增删改查、排序、合并等,并展示了如何使用这些方法来高效地管理和操作列表数据。
#include <iostream>
using namespace std;
#include <list>
using std::list;
#include <algorithm>
#include <iterator>
template<typename T> void printlist(const list<T> &listRef);

int main()
{
	const int size=4;
	int arry[size]={2,6,4,8};
    list<int> values;
	list<int> othervalues;
	
	values.push_front(1);
	values.push_front(2);
	values.push_back(4);
	values.push_back(3);
	printlist(values);
	values.sort();
	cout<<"After soft values:"<<endl;
	printlist(values);
	//insert elements of arry to othervalue
	othervalues.insert(othervalues.begin(),arry,arry+size);
	cout<<"\ninsert,othervalus is:";
	printlist(othervalues);
	//remove othervalues elements and insert at the end of values
	values.splice(values.end(),othervalues);
	cout<<"\nAfter splice,values contains:";
	printlist(values);
	values.sort();
	cout<<"\nAfter sort,values contain:";
	printlist(values);
	
	othervalues.insert(othervalues.begin(),arry,arry+size);
	othervalues.sort();
	cout<<"\nAfter insert and sort,othercalues contain:";
	printlist(othervalues);
	
	//remove othervalues elements and insert into values in sorted order
	values.merge(othervalues);//删除otheevalues,将它以有序的方式插入到values,操作之前两个list按照相同的顺序排序
	cout<<"\nAfter merge values contains:";
	printlist(values);
	cout<<"  othervalues contains:";
	printlist(othervalues);
	
	values.pop_front();
	values.pop_back();
	cout<<"\n after pop_font and pop_back values contaisn:";
	printlist(values);
	
	values.unique();//remove duplicate elements
	cout<<"\n After unique,values contains:";
	printlist(values);
	
	//swap elements of values and othervalues
	values.swap(othervalues);
	cout<<"\nAfter swap:\n values contains:";
	printlist(values);
	cout<<"\nAfter swap:\n othervalues contains:";
	printlist(othervalues);
	
	//replace contents of values with elements of othervalues
	values.assign(othervalues.begin(),othervalues.end());
	cout<<"\nAfter assign,values contains:";
	printlist(values);
	
	//remove othervalues and insert into values in sorted order
	values.merge(othervalues);
	cout<<"\nAfter merge,values contains:";
	printlist(values);
	
	
	values.remove(4);//remove all 4s
	cout<<"\nAfter remove(4) ,values contains:";
	printlist(values);
	cout<<endl;
	return 0;
	
}
template<typename T>
void printlist(const list<T> &listRef)
{
	if(listRef.empty())
		cout<<"List is empty";
	else
		
	{
		ostream_iterator<T> output(cout," ");
		copy(listRef.begin(),listRef.end(),output);
	}
}

转载于:https://www.cnblogs.com/huzhongzhong/archive/2011/07/28/2119861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值