cb16a_c++_顺序容器的选用_排序_二分查找
/*cb16a_c++_顺序容器的选用_排序_二分查找
顺序容器:
1.vector的优点与缺点
vector优点:排序利用下标,快速排序,做二分查找非常快
2.list的优点与缺点
list优点:插入,删除速度快。vector插入,删除速度慢。
list缺点:排序慢
3.deque的优点与缺点
优点:快速排序,双端操作。
缺点:比vector操作慢一点点
插入操作如何影响容器的选择---list
元素的访问如何影响容器的选择---vector
选择容器的提示---不知道选择哪个,就vector. 因为vector可以转list或者deque
参考:
https://www.cnblogs.com/txwtech/p/12317531.html
vector sort算法排序。。。
vector 排序后,做二分查找非常快
if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
{
cout << "找到了" << endl;
}
//链表排序后,没有下标,不能随机操作,不能用二分查找。只能线程查找
*/
/*cb16a_c++_顺序容器的选用_排序_二分查找
顺序容器:
1.vector的优点与缺点
vector优点:排序利用下标,快速排序,做二分查找非常快
2.list的优点与缺点
list优点:插入,删除速度快。vector插入,删除速度慢。
list缺点:排序慢
3.deque的优点与缺点
优点:快速排序,双端操作。
缺点:比vector操作慢一点点
插入操作如何影响容器的选择---list
元素的访问如何影响容器的选择---vector
选择容器的提示---不知道选择哪个,就vector. 因为vector可以转list或者deque
vector sort算法排序。。。
vector 排序后,做二分查找非常快
if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
{
cout << "找到了" << endl;
}
//链表排序后,没有下标,不能随机操作,不能用二分查找。只能线程查找
*/ #include <iostream>
#include <list>
#include <vector>
#include <deque>
#include <algorithm> using namespace std; int main()
{
vector<int> v;
list<int> l;
deque<int> d;
d.push_back();
d.push_front();//双端操作 v.push_back();
v.push_back();
v.push_back();
vector<int>::iterator vi = v.begin();
++vi;
++vi;
v.insert(vi, );//插入在vi迭代器前,70
vi = v.begin();
++vi;
v.erase(vi);//删除后,后面的数据向前移动
sort(v.begin(),v.end());//排序后,做二分查找非常快
//二分查找
if (binary_search(v.begin(), v.end(),))//二分查找,找70.
{
cout << "找到了" << endl;
}
else
{
cout << "没找到" << endl;
} l.push_back();//list插入速度快
l.push_back();
l.push_back();
list<int>::iterator li = l.begin();
++li;
++li;
l.insert(li,);//list插入速度快,动态创建节点,指针前后连接。
li = l.begin();
++li;
l.erase(li);//删除速度快。删除后,直接前后指针相连接
l.sort();
if (binary_search(l.begin(), l.end(), ))//链表没有下标,不能随机操作,不能用二分查找。只能线程查找
{
cout << "找到了" << endl;
}
else
{
cout << "没找到" << endl;
} return ;
}
cb16a_c++_顺序容器的选用_排序_二分查找的更多相关文章
- cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
/*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表实例化std::list对象在list开头插入元素在list末尾插入元素在list中间插入元素,插入时间恒定,非常快.数组:中间 ...
- cb14a_c++_顺序容器的操作7_赋值与交换(swap)_vector转list
cb14a_c++_顺序容器的操作7_赋值与交换(swap) vector数据赋值给list, slist.assign(svec.begin(), svec.end());//这样可以转 svec- ...
- ca13a_c++_顺序容器的操作6删除元素
/*ca13a_c++_顺序容器的操作6删除元素c.erase(p) //删除迭代器p指向的位置c.erase(b,e) //删除b to e之间的数据,迭代器b包括,e不包括c.clear()//删 ...
- cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size
cb11a_c++_顺序容器的操作4 2 容器大小的操作 3 c.size() 容器当前的个数 4 c.max_size(),容器最大存储量 5 c.empty() 是否为空 6 c.resize(n ...
- cb10a_c++_顺序容器的操作3关系运算符
cb10a_c++_cb09a_c++_顺序容器的操作3 2 顺序容器的操作3 3 关系运算符 4 所有的容器类型都可以使用 5 比较的容器必须具有相同的容器类型,double不能与int作比较 6 ...
- cb09a_c++_顺序容器的操作2-在顺序容器中添加元素_插入数据
cb09a_c++_顺序容器的操作2在顺序容器中添加元素vector不能向前插入数据,list可以用insertc.push_back(t);c.push_front(t);c.insert(p,t) ...
- cb08a_c++_顺序容器的操作1
cb08a_c++_顺序容器的操作1容器定义的类型别名begin(闭区间)和end(开区间)成员{first,last)左闭右开,左包括,右不包括,end()指向最后一个的下一个. /*cb08a_c ...
- cb06a_c++_顺序容器的定义
/*cb06a_c++_顺序容器的定义顺序容器:vector,数组,尾端操作数据,快速随机访问list 链表,快速插入数据deque数组,双端-首尾操作数据,方便两端的数据访问 顺序容器适配器:sta ...
- cb03a_c++_数据结构_顺序容器_STL_stack
/*cb03a_c++_数据结构_顺序容器_STL_stack堆栈:LIFO--Last In First Out后进先出,用于系统程序设计自适应容器(容器适配器),不是独立的容器,是一个适配器栈适配 ...
随机推荐
- PhpStorm2016.3激活
选择License server,输入以下任意一个地址: http://idea.imsxm.com/http://114.215.133.70:41017/http://mcpmcc.com:101 ...
- 一键部署open***服务
一键部署超级简单易用的openvpn服务器,支持多证书+多账号[密码]认证 一. 服务器端部署 项目地址:https://github.com/guoew/openvpn-install 1.1. 下 ...
- 【Windows】win10:硬件良好,软件系统出错
平台:戴尔G3, win10 现象:能正常开机,开机后前几分钟内能打开部分应用,经过大约两分钟后系统无法正常使用. 分析:此次问题出现再新购买的笔记本电脑中,鉴于电脑刚买,硬件坏的可能性很小,然而为了 ...
- 读Pyqt4教程,带你入门Pyqt4 _006
窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...
- 01 . Keepalived原理使用和配置
Keepalived简介 是什么? keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测we ...
- 如何开启远程桌面连接功能?windows的远程桌面连接功能使用步骤
由于远程桌面的诞生,为电脑工作者提供了极大的便利.首先,推荐1款比较适合服务器管理的远程桌面: 可以管理1000+服务器/vps的远程桌面:IIS7远程桌面管理 开启远程桌面功能步骤: 1.右键点击电 ...
- WebSocket是什么,有什么作用和特点?
WebSocket是一种在单个TCP连接上进行全双工通信的协议. Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手.具有持久化的特性 特点: 保持连接状态.与HTTP ...
- 网络编程TCP/IP详解
网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...
- Java实现 LeetCode 162 寻找峰值
162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返 ...
- Java实现矩阵相乘问题
1 问题描述 1.1实验题目 设M1和M2是两个n×n的矩阵,设计算法计算M1×M2 的乘积. 1.2实验目的 (1)提高应用蛮力法设计算法的技能: (2)深刻理解并掌握分治法的设计思想: (3)理解 ...