c++笔试准备之list用法

1 头文件包含
#include

2 list可以有指定尺寸和初始值的构造。但是无法index索引,无法at()函数索引。遍历的时候只能使用迭代器。
listl1;
listl2(6,2);
cout << l1.size() << endl;
cout << l2.size() << endl;

3 list前后都可以插入和删除,这一点和deque相同,它是一个双向链表。
l1.push_back(1);
l1.push_back(2);
l1.push_back(3);
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
l1.pop_back();
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
l1.pop_front();
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;

4 可以clear清空和empty判断是否为空
if (l1.empty()) {
cout << “l1 is empty” << endl;
}
l1.clear();
if (l1.empty()) {
cout << “l1 is empty after clear” << endl;
}

5 list可以通过insert插入数据,用法和vector相似
l1.insert(l1.begin(), 2); //在迭代器位置插入一个元素2
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
listl3;
l3.insert(l3.begin(), 3,90); //在迭代器位置后面插入3个元素90
cout << l3.size() << " " << l3.front() << " " << l3.back() << endl;
l3.insert(l3.begin(),l1.begin(), l1.end()); //在迭代器位置插入[first,last)之间的内容
cout << l3.size() << " " << l3.front() << " " << l3.back() << endl;

6 同样有swap函数
l1.swap(l3);
cout << l1.size() << endl;
cout << l3.size() << endl;

7 通过assign给list赋值
l1.assign(4, 5); //必须要有个数4和初值5,只有一个初值5,不写数量是不可以的
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
l1.assign(l3.begin(),l3.end());
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;

8 可以通过max_size()函数获得最大list尺寸
cout << l1.max_size() << endl;

9 关于两个list的splice剪切——这个功能是独有的
l1.splice(l1.begin(), l3); //将l3整个剪切到l1.begin()位置,剪切后l3为空
cout << l1.size() << " " << l3.size() << endl;
l1.splice(l1.begin(), l2,l2.begin()); //将l2的l2.begin()的位置的一个元素剪切到l1.begin()位置,剪切后l2会少该元素
cout << l1.size() << " " << l2.size() << endl;
l1.splice(l1.begin(), l2, l2.begin(),l2.end()); //将l2的l2.begin()-l2.end()的范围区间的元素剪切到l1.begin()位置,剪切后l2会少该区间的元素
cout << l1.size() << " " << l2.size() << endl;

10 关于两个list的merge合并——这个功能是独有的
listl4;
l4.push_back(4);
l4.push_back(8);
l4.push_back(9);
l4.push_back(3);
l1.sort(); //从小到大排序
l4.sort();
l1.merge(l4);//合并之前必须是排过序的,合并之后也是排好序的(从小到大),合并之后l4为空
cout << l1.front() << " " << l1.back() << endl;
cout << l1.size() << " " << l4.size() << endl;

11 unique去除重复的元素——这个功能是独有的
l1.unique();
cout <<l1.size() << " " << l1.front() << " " << l1.back() << endl;

12 通过erase删除元素
l1.erase(l1.begin()); //删除指定位置的元素
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
l1.erase(l1.begin(), l1.end());//删除指定范围区域的元素[first,last)
cout << l1.size() << endl;

13 通过resize改变list的尺寸
l1.resize(5); //本来l1为空,现在size为5,初值全为0-不写默认就为0
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
l1.resize(4, 6);//本来size为5,现在size为4,值全为0,这里的6没用
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
l1.resize(7, 6);//本来size为4,现在size为7,7-4=3,后面扩充的3个值初始化为6
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;

14 通过reverse函数可以list进行翻转——这个功能是独有的
l1.reverse();
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;

15 remove和remove_if函数——这个功能是独有的
bool valueXY(int value) {
return value < 5;
}
l1.remove(5); //移除值等于5的元素
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;
l1.remove_if(valueXY); //移除符合条件的元素
cout << l1.size() << " " << l1.front() << " " << l1.back() << endl;

16 list的迭代器
list::iterator iter1 = l1.begin(); //返回起始位置的迭代器
cout << *iter1 << endl;
list::iterator iter2 = l1.end(); //返回末尾的下一个位置的迭代器
iter2–;
cout << *iter2 << endl;
list::reverse_iterator iter3 = l1.rbegin(); //返回反向起始的迭代器-就是正向末尾
cout << *iter3 << endl;
list::reverse_iterator iter4 = l1.rend(); //返回反向末尾的前一个位置迭代器-正向开头的前一个位置
iter4–;
cout << *iter4 << endl;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值