deque&list
树图思维导图提供 deque&list 在线思维导图免费制作,点击“编辑”按钮,可对 deque&list 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:3b261aafc9d6196c6425fe2df3b331c2
deque&list思维导图模板大纲
deque是list和vector的折中方案。兼有list的优点,也有vector随机线性访问效率高的优点
优缺点
优
支持随机访问,即操作,所以查询效率高;可在双端进行pop,push
缺
不适合中间插入删除操作;占用内存多
适用场景
适用于既要频繁随机存取,又要关心两端数据的插入与删除的场景。支持随机访问,但是性能没有vector好。可以在内部进行插入和删除操作,但性能不及list。需要在两端插入和删除元素,且无需引用容器内的元素,用deque最好
常用函数
deque<int> deq = { 1,2,3 };//初始化vector,v:{1,2,3} deque<int> :: iterator it = deq.begin();//定义vector的迭代器,指向begin() deq.push_back(4);//在deque的尾部插入元素4,v{1,2,3,4} deq.pop_back);//删除deque的尾部元素,v:{1,2,3} deq.push_front(4);//在deque的头部插入元素4,v:{4,1,2,3} deq.pop_front();//删除deque的头部元素 deq.size();//返回deque中元素的个数 deq.empty();//返回deque是否为空,若为空则返回true否则返回false deq.front();//返回deque中的第一个元素 deq.back();//返回deque中的最后一个元素 deq.begin();//返回deque第一个元素的迭代器 deq.end();//返回deque最后一个元素后一个位置的迭代器 deq.clear();//清空deque deq.erase(deq.begin());//删除迭代器it所指向的元素,返回下一个元素的迭代器 deq.insert(deq.begin(),1);//在迭代器it所指向的位置前插入元素1,返回插入元素的迭代器
vector是那种应该在默认情况下使用的序列。 如果大多数插入和删除操作发生在序列的头部或尾部时,应该选用deque。
List由双向链表实现而成,每个元素都是放在一块内存中,它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供[]操作符的重载。但是由于链表的特点,它可以很有效率的支持任意地方的插入和删除操作。
list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域 前驱元素指针域保存了前驱元素的首地址;数据域则是本节点的数据;后继元素指针域则保存了后继元素的首地址。
优缺点
优
内存不连续,动态操作,可在任意位置插入或删除且效率高。
缺
不支持随机访问。
适用场景
适用于经常进行插入和删除操作并且不经常随机访问的场景。
常用函数
元素访问
l.front(); l.back(); l.begin(); l.end();
添加元素
l.push_back(); l.push_front(); l.insert()//在指定位置插入一个或多个元素 l.insert(l.begin(),100);//在l的开始位置插入100。 l.insert(l.begin(),2,200);//在l的开始位置插入2个100。 l.insert(l.begin(),l2.begin(),I2.end());//在l的开始位置插入l2的从开始到结束的所有位置的元素。
删除元素
l.pop_back(); l.pop_front(); l.erase();//删除一个元素或一个区域的元素l.erase(l.begin));//将l的第一个元素删除。 l.erase(l.begin(), l.end());//将l的从begin()到end()之间的元素删除。
其他
l.empty();//判断是否为空 l.clear();//清空 l.reverse();//翻转 l.merge();//合并
vector和deque都可以使用algorithm中的sort()函数,要求使用随机访问迭代器 但list容器并不提供随机访问迭代器,只提供双向迭代器,因此不能对 list 中的元素使用sort()算法。
单向
单链表迭代器(forward_list)/哈希表迭代器,这些只支持单向++
双向
双链表迭代器/map迭代器,这些支持的++/- -操作
随机
string/vector/deque,这些是支持++/- -/+/-操作的,类似原生指针一般。
树图思维导图提供 TSN/TTE测试分类 在线思维导图免费制作,点击“编辑”按钮,可对 TSN/TTE测试分类 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:f23179d238d9066af21a8938c2ba7d05
树图思维导图提供 计算机网络 在线思维导图免费制作,点击“编辑”按钮,可对 计算机网络 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:460f582685c98eeb624284c6e0476b04