STL标准库-容器-forward_list
2024-08-24 06:06:59
技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性。
forward_list即单向list,功能少额外开销就小.而且只能在前段插入元素
结构如下
一 定义
#include <forward_list>
int main(int argc, const char * argv[]) { //a.定义 list<typeName> name;
forward_list<int> l; //b.拷贝构造
forward_list<int> l1(l); //c.拷贝赋值
l1 = l; //d.按指定元素个数定义 含五个默认值是0的元素的链表
forward_list<int> l2(); //e.指定元素个数及类型 含有5个值为2的链表
forward_list<int> l3(,); //f.指定赋值区域
forward_list<int> l4(l1.begin(),l1.end()); for(auto i : l)
{
cout<< i << endl;
} return ;
}
二 与迭代器的使用
由于forward_list的迭代器内指向内存不连续 顾不能做迭代器 "+", "-" 操作
int main()
{
forward_list<int> l = {,,,,,,,,,}; //返回迭代器开始之前的位置
l.before_begin(); //返回第一个元素地址
l.begin(); //返回最后一个元素的下一个位置
l.end(); //返回迭代器开始之前的位置
l.cbefore_begin(); //返回第一个元素地址
l.cbegin(); //返回最后一个元素的下一个位置
l.cend();
return ;
}
三 容量
int main()
{
forward_list<int> l = {,,,,,,,,,}; //返回forward_list是否为空
cout << l.empty() << endl; //forward_list的最大容量
cout << l.max_size() << endl; return ;
}
四 元素访问
int main()
{
forward_list<int> l = {,,,,,,,,,}; //返回第一个元素
cout<< l.front() <<endl; return ;
}
五 操作
int main()
{
forward_list<int> l = {,,,,,,,,,};
iterator<forward_list<int>, int> i;
for(auto i : l)
{ cout << i << " ";
}
cout<<"初始化"<<endl; //给l赋值成10个1
l.assign(, );
for(auto i : l)
{
cout << i << " ";
}
cout<<"assign()"<<endl; //前段插入0
l.push_front();
for(auto i : l)
{
cout << i << " ";
}
cout<<"push_front()"<<endl; //在头部插入一组 参数为emplace_front(initializer_list<>) 初始化1
l.emplace_front();
for(auto i : l)
{
cout << i << " ";
}
cout<<"emplace_front()"<<endl; //弹出第一个元素
l.pop_front();
for(auto i : l)
{
cout << i << " ";
}
cout<<"pop_front()"<<endl; //在指定位置后面插入一组数据
l.emplace_after(l.begin(), );
for(auto i : l)
{
cout << i << " ";
}
cout<<"emplace_after()"<<endl; //在指定位置后面插入一组数据
l.insert_after(l.begin(), );
for(auto i : l)
{
cout << i << " ";
}
cout<<"insert_after()"<<endl; //在指定位置之后插入元素
l.insert_after(l.begin(), );
for(auto i : l)
{
cout << i << " ";
}
cout<<"insert_after()"<<endl; //删除指定位置
l.erase_after(l.begin(),l.end());
for(auto i : l)
{
cout << i << " ";
}
cout<<"erase_after()"<<endl; //交换并释l2
forward_list<int> l2 = {,,,};
l.swap(l2);
for(auto i : l)
{
cout << i << " ";
}
cout<<"swap()"<<endl; //重新设定内存,不足补齐, 超过弹出尾部
l.resize(,);
for(auto i : l)
{
cout << i << " ";
}
cout<<"resize()"<<endl; //清空
l.clear();
for(auto i : l)
{
cout << i << " ";
}
cout<<"clear()"<<endl; return ;
}
六 修改操作
int main()
{
//指定位置拼接链表
forward_list<int> l = {,,,,,,,,,};
forward_list<int> l1 = {,,,,,,,,,,}; l.splice_after(l.before_begin(), l1);
for(auto i : l)
{
cout << i << " ";
}
cout<<"splice_after()"<<endl; //删除指定元素
l.remove();
for(auto i : l)
{
cout << i << " ";
}
cout<<"remove()"<<endl; //按指定条件删除
l.remove_if([](int x){return x<;});
for(auto i : l)
{
cout << i << " ";
}
cout<<"remove_if()"<<endl; //排序 <
l.sort();
for(auto i : l)
{
cout << i << " ";
}
cout<<"sort(<)"<<endl; l.sort([](int first, int second){return first > second;});
for(auto i : l)
{
cout << i << " ";
}
cout<<"sort(>)"<<endl; //删除重复元素
l.unique();
for(auto i : l)
{
cout << i << " ";
}
cout<<"unique()"<<endl; forward_list<int> l2 = {,,,,,,,,,,,,}; //按指定要求删除元素(排序后)
l2.unique([](int x, int y) { return (x == y) && (x < );});
for(auto i : l2)
{
cout << i << " ";
}
cout<<"unique([])"<<endl; forward_list<int> l3 = {,,,};
forward_list<int> l4 = {,,,};
//合并两个有序forward_list 合并后仍然有序
l3.merge(l4);
for(auto i : l3)
{
cout << i << " ";
}
cout<<"merge()"<<endl; //翻转
l3.reverse();
for(auto i : l3)
{
cout << i << " ";
}
cout<<"reverse()"<<endl; //交换 多退少补 并释放l
l3.swap(l);
for(auto i : l3)
{
cout << i << " ";
}
cout<<"reverse()"<<endl; return ;
}
最新文章
- 花一分钟来看看Worktile是如何为团队协作而生的
- 出现Assertion failure in -[***** layoutSublayersOfLayer:]
- javascript_获取iframe框架中元素节点的属性值
- HDU5441 Travel 并查集
- iOS 非ARC基本内存管理系列总结6 -设计微博模型
- SqlDataAdapter用法
- NEsper事件处理 z
- 在windows下解压缩Linux内核源代码出现重复文件原因
- [网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
- call()与apply()传参需要注意的一点
- 前端学习——JQuery Ajax使用经验
- JVM体系结构-----深入理解内存结构
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse
- Python入门day04_函数与装饰器
- SQLSERVER查询数据库死锁的存储过程
- django项目中在settings中配置静态文件
- 微信接口开发之高级篇系列【微信权限封装类WechatAuth】
- PHP json_encode重要的秘密
- C#实现之(自动更新)
- A Connection to the remote computer could not be established