list 对于数据的处理,有很多的优点,使用起来很方便,动态性和vector相似,但是各种操作都是比vector 更优的,比如在复杂度方面。
下面讲讲各种操作:
定义一个双向链表, list<int>mp ,定义一个数量为n 的 链表 list<int>mp(n),初始值都是0,定义一个数量为n,各个元素值都是m的链表list<int>mp(n,m)。
数据的插入push_back()是后插法,从后面插入,push_front( )是前插法,每次都是插到第一个位置去 :很灵活
mp.push_back(100); //后插
mp.push_front(600);//前插
弹出元素pop_back() 和pop_front() 是弹出末元素和首元素的操作 ,简单灵活。
mp.pop_back();
mp.pop_front();
链表插入操作 insert,可以在任何地方进行插入:是迭代器所指的位置插入一个元素。
mp.insert(mp.begin(),14);
size()返回容器内元素个数的大小。 empty()判断是否为空。 clear是清空所有的元素值。
删除操作:既可以是单个元素值,也可以是一段区域内的所有元素值。(迭代器来实现)
mp.erase(mp.begin()+2); //删除单个元素
mp.erase(mp.begin(),mp.end()); //删除一段区域的元素
另一种删除 remove操作(直接用数值来实现):
list<int>mp{6,7,8,9,7,10};
mp.remove(7);
for(auto it=mp.begin();it!=mp.end();it++)
cout<<*it<<endl;
倒置(反转)容器内所有的元素 reverse函数实现。
list<int>mp{6,7,8,9,7,10};
reverse(mp.begin(),mp.end());
for(auto it=mp.begin();it!=mp.end();it++)
cout<<*it<<endl;
list find函数操作:
list<int>mp;
list<int>::iterator iter;
mp.push_back(123);
iter=find(mp.begin(),mp.end(),123);
清空操作 clear( ),判断是否为空 empty().
https://blog.youkuaiyun.com/yu121380/article/details/81604557
https://blog.youkuaiyun.com/yu876876/article/details/81698030 详解。