- 生肖
- 龙
- 星座
- 天秤座
- 性别
- 男
- 积分
- 146
- 积分
- 174
- 精华
- 2
- 阅读权限
- 20
- 注册时间
- 2012-6-10
- 最后登录
- 2019-6-18
- 帖子
- 8
- 生肖
- 龙
- 星座
- 天秤座
- 性别
- 男
|
本帖最后由 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;
- }
复制代码
|
|