设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5832|回复: 0
打印 上一主题 下一主题

[C++] list容器的详细使用方法,所有成员函数(STL)

[复制链接]

7

主题

0

好友

174

积分

注册会员

Rank: 2

生肖
星座
天秤座
性别
跳转到指定楼层
楼主
发表于 2012-6-11 10:24:22 |只看该作者 |倒序浏览
本帖最后由 sky_yx 于 2015-12-30 14:18 编辑

双向链表容器的详细使用方法.
  1. //双向链表容器
  2. #include <windows.h>
  3. #include <iostream>
  4. #include <string>
  5. #include <list>
  6. using namespace std;
  7. //筛选条件(是否为奇数)
  8. template<class T>class is_odd : public std::unary_function<T, bool>
  9. {
  10. public:
  11.         bool operator() (T& val)
  12.         {
  13.                 return ( val % 2 ) == 1;
  14.         }
  15. };
  16. int _tmain(int argc, _TCHAR* argv[])
  17. {
  18.         list<string> listStr;
  19.         list<string> listStr2;
  20.         list<string>::iterator iterStr;
  21.         list<string>::size_type listSize;
  22.         string Str;
  23.         //向尾部添加元素
  24.         listStr.push_back("Beacon");
  25.         listStr.push_back("WangQiChao");
  26.         //向头部添加元素
  27.         listStr.push_front("WangBeacon");
  28.         listStr.push_front("Hello Beacon");
  29.        
  30.         //遍历
  31.     for(list<string>::iterator i = listStr.begin();
  32.         i != listStr.end();
  33.         i++)
  34.     {
  35.         cout<<*i<<endl;
  36.     }
  37.    
  38.         //从尾部删除元素
  39.         listStr.pop_back();
  40.         //从头部删除元素
  41.         listStr.pop_front();
  42.         //迭代器
  43.         //begin                传回迭代器中的第一个数据地址
  44.         //end                指向迭代器中末端元素的下一个,指向一个不存在元素
  45.         //cbegin        传回常量迭代器中的第一个数据地址
  46.         //cend                指向常量迭代器中末端元素的下一个,指向一个不存在元素
  47.         //crbegin        传回迭代器中的最后数据地址,倒序迭代器
  48.         //crend                指向迭代器中第一个元素的前一个,指向一个不存在元素,倒序迭代器
  49.         //赋数据值
  50.         //listStr2.assign(listStr.begin(),listStr.end());//将listStr.begin(),listStr.end() - 1区间中的数据赋值给listStr2
  51.         listStr2.assign(10,"String");//将10个"String"赋值给listStr2
  52.         //传回第一个数据
  53.         Str = listStr.front();
  54.         //传回最后一个数据,不检查这个数据是否存在
  55.         Str = listStr.back();
  56.         //移除容器中所有数据
  57.         //listStr.clear();
  58.         //删除数据
  59.         iterStr = listStr2.begin();
  60.         iterStr++;
  61.         //iterStr = listStr2.erase(iterStr);//删除指定位置的数据,传回下一个数据的位置
  62.         //iterStr = listStr2.erase(iterStr,listStr2.end());//删除指定区间的数据,传回下一个数据的位置
  63.         //插入数据
  64.         iterStr = listStr.begin();
  65.         iterStr++;
  66.         listStr.insert(iterStr,"String1");//在指定位置插入一个数据
  67.         listStr.insert(iterStr,2,"String2");//在指定位置插入多个相同数据
  68.         listStr.insert(iterStr,listStr2.begin(),listStr2.end());//在指定位置插入多个不同数据
  69.         //获得元素的个数
  70.         listSize = listStr.size();
  71.         //获得可以装载的元素最大个数
  72.         listSize = listStr.max_size();
  73.         list <int> c1, c2, c3;
  74.         list <int>::iterator c_Iter;
  75.         c1.push_back( 3 );
  76.         c1.push_back( 6 );
  77.         c2.push_back( 2 );
  78.         c2.push_back( 4 );
  79.         c3.push_back( 5 );
  80.         c3.push_back( 1 );
  81.        
  82.         //高效插入
  83.         c_Iter = c1.begin();
  84.         c_Iter++;
  85.         c2.splice(c2.begin(),c1,c1.begin(),c2.end());//将另一个链表中的某些元素插入到目的链表的指定位置
  86.         c2.splice(c2.begin(),c1,c_Iter);//将另一个链表中的某个元素插入到目的链表的指定位置
  87.         c2.splice(c2.begin(),c1);//将c1插入到c2的指定位置
  88.        
  89.         //穿插
  90.         //排序
  91.         //穿插排序
  92.         //删除匹配的元素
  93.         //c2.remove(3);
  94.         //删除匹配的元素
  95.         //c2.remove_if(is_odd<int>());
  96.         //扩展或截断元素
  97.         c2.resize(5,40);//如果是增加元素,元素值为 40
  98.         c2.resize(5);//如果是增加元素,元素值为 0
  99.         //逆转元素
  100.         c2.reverse();
  101.         //排序
  102.         //交换元素
  103.         c2.swap(c1);//之后 c1 放着 c2的元素  c2 放着 c1 的元素
  104.        
  105.         return 0;
  106. }
复制代码


分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分
+q67824885
您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-4-24 07:08 , Processed in 0.107961 second(s), 28 queries .

回顶部