SKY外语计算机学习
标题:
list容器的详细使用方法,所有成员函数(STL)
[打印本页]
作者:
wangbeacon
时间:
2012-6-11 10:24
标题:
list容器的详细使用方法,所有成员函数(STL)
本帖最后由 sky_yx 于 2015-12-30 14:18 编辑
双向链表容器的详细使用方法.
//双向链表容器
#include <windows.h>
#include <iostream>
#include <string>
#include <list>
using namespace std;
//筛选条件(是否为奇数)
template<class T>class is_odd : public std::unary_function<T, bool>
{
public:
bool operator() (T& val)
{
return ( val % 2 ) == 1;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
list<string> listStr;
list<string> listStr2;
list<string>::iterator iterStr;
list<string>::size_type listSize;
string Str;
//向尾部添加元素
listStr.push_back("Beacon");
listStr.push_back("WangQiChao");
//向头部添加元素
listStr.push_front("WangBeacon");
listStr.push_front("Hello Beacon");
//遍历
for(list<string>::iterator i = listStr.begin();
i != listStr.end();
i++)
{
cout<<*i<<endl;
}
//从尾部删除元素
listStr.pop_back();
//从头部删除元素
listStr.pop_front();
//迭代器
//begin 传回迭代器中的第一个数据地址
//end 指向迭代器中末端元素的下一个,指向一个不存在元素
//cbegin 传回常量迭代器中的第一个数据地址
//cend 指向常量迭代器中末端元素的下一个,指向一个不存在元素
//crbegin 传回迭代器中的最后数据地址,倒序迭代器
//crend 指向迭代器中第一个元素的前一个,指向一个不存在元素,倒序迭代器
//赋数据值
//listStr2.assign(listStr.begin(),listStr.end());//将listStr.begin(),listStr.end() - 1区间中的数据赋值给listStr2
listStr2.assign(10,"String");//将10个"String"赋值给listStr2
//传回第一个数据
Str = listStr.front();
//传回最后一个数据,不检查这个数据是否存在
Str = listStr.back();
//移除容器中所有数据
//listStr.clear();
//删除数据
iterStr = listStr2.begin();
iterStr++;
//iterStr = listStr2.erase(iterStr);//删除指定位置的数据,传回下一个数据的位置
//iterStr = listStr2.erase(iterStr,listStr2.end());//删除指定区间的数据,传回下一个数据的位置
//插入数据
iterStr = listStr.begin();
iterStr++;
listStr.insert(iterStr,"String1");//在指定位置插入一个数据
listStr.insert(iterStr,2,"String2");//在指定位置插入多个相同数据
listStr.insert(iterStr,listStr2.begin(),listStr2.end());//在指定位置插入多个不同数据
//获得元素的个数
listSize = listStr.size();
//获得可以装载的元素最大个数
listSize = listStr.max_size();
list <int> c1, c2, c3;
list <int>::iterator c_Iter;
c1.push_back( 3 );
c1.push_back( 6 );
c2.push_back( 2 );
c2.push_back( 4 );
c3.push_back( 5 );
c3.push_back( 1 );
//高效插入
c_Iter = c1.begin();
c_Iter++;
c2.splice(c2.begin(),c1,c1.begin(),c2.end());//将另一个链表中的某些元素插入到目的链表的指定位置
c2.splice(c2.begin(),c1,c_Iter);//将另一个链表中的某个元素插入到目的链表的指定位置
c2.splice(c2.begin(),c1);//将c1插入到c2的指定位置
//穿插
//排序
//穿插排序
//删除匹配的元素
//c2.remove(3);
//删除匹配的元素
//c2.remove_if(is_odd<int>());
//扩展或截断元素
c2.resize(5,40);//如果是增加元素,元素值为 40
c2.resize(5);//如果是增加元素,元素值为 0
//逆转元素
c2.reverse();
//排序
//交换元素
c2.swap(c1);//之后 c1 放着 c2的元素 c2 放着 c1 的元素
return 0;
}
复制代码
欢迎光临 SKY外语计算机学习 (http://skywj.com/)
Powered by Discuz! X2.5