一、顺序容器的分类

  顺序容器:vector向量、list链表、deque双端队列;

  优先级最高的是vector向量,它的速度比较快,优点最多;

  在程序设计中,容器可以切换;

 #include <iostream>
#include <vector>
#include <list>
#include <deque> using namespace std; int main()
{
vector<int> Ivec;
list<int> Ilist; //利用链表
deque<int> Ideque; Ivec.push_back();
Ivec.push_back();
Ivec.push_back();
Ivec.push_back();
Ivec.push_back();
Ivec.push_back();
Ivec.push_back();
vector<int>::iterator it=Ivec.begin();
it++;
it++;
Ivec.insert(it, ); //插入操作比较慢,因为插入点之后的数据都需要向后移动
it++;
Ivec.erase(it); //删除操作也比较慢,数组中删除同样需要移动数据 sort(Ivec.begin(), v.end()); //速度比较快,sort中利用下标快速排序,
//存在下标,在排好序的情况下,利用二分法查找很快;
if(binary_search(Ivec.begin(), Ivec.end(), )){
std::cout << "find 59 ok" << std::endl;
}else{
std::cout << "find 59 error" << std::endl; sort(Ivec.begin(), v.end()); //速度比较快,sort中利用下标快速排序,
//存在下标,在排好序的情况下,利用二分法查找很快;
if(binary_search(Ivec.begin(), Ivec.end(), )){
std::cout << "find 59 ok" << std::endl;
}else{
std::cout << "find 59 error" << std::endl;
} Ilist.push_back();
Ilist.push_back();
Ilist.push_back();
Ilist.push_back();
Ilist.push_back();
Ilist.push_back();
list<int>::iterator it2=Ilist.begin();
it2++;
it2++;
Ilist.insert(it2, ); //插入操作比较快,因为链表的插入不需要移动数据
it2++;
Ilist.erase(it2); //在链表中直接操作指针即可 Ilist.sort(); //链表中排序比较慢
//二分法查找,在list是伪二分法查找,速度比较慢
if(binary_search(Ilist.begin(), Ilist.end(), )){
std::cout << "find 59 ok" << std::endl;
}else{
std::cout << "find 59 error" << std::endl;
} //deque,可以在前端操作,操作灵活,所有的操作比vector慢一点点,分区存储,可以保存大量数据
Ideque.push_back();
Ideque.push_front(); return ;
}

STL之如何选择顺序容器的更多相关文章

  1. C++——STL中三种顺序容器的简要差别

    C++ STL 提供了3个顺序容器 :vector, deque, list Vector动态数组.支持高速訪问:list双向链表,支持高速插入和删除. vector 中的元素是顺序存放的.所以随机訪 ...

  2. STL源码剖析—顺序容器

    一.vector 1.vector简介: vector的数据安排及其操作方式与数组非常相似,微小的差别在于空间的使用,数组是静态空间,一旦配置了就不能改变.vector是动态空间,随着元素的加入,它的 ...

  3. STL顺序容器【vector】【deque】【list】

    我们都知道,stl在集装箱船分为两类,订购集装箱和相关的容器. 顺序容器有三种即动态数组vector,双端队列deque,以及链表list (对csdn的文字排版严重吐槽.写好的版发表了就变了) 一: ...

  4. STL中map与hash_map容器的选择收藏

    这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自al ...

  5. STL之顺序容器

    顺序容器: vector:数组 list:链表 deque:双端数组 顺序容器适配器: stack:堆栈 queue:队列 priority_queue:优先级队列 deque是一个动态数组 dequ ...

  6. C++ STL 顺序容器--list + 关联容器

    list 双向链表,可以双向遍历,既指向前驱节点,又指向后继但不能随机访问任意元素,可动态增加或者减少元素,内存管理自动完成,增加任何元素都不会使迭代器失效, 删除元素时,除了指向当前被删元素的迭代器 ...

  7. STL顺序容器的基本操作

    容器主要分为:顺序容器和关联容器 顺序容器和关联容器,顺序容器主要有:vector.list.deque等.其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实 ...

  8. 侯捷STL学习(一)--顺序容器测试

    开始跟着<STL源码剖析>的作者侯捷真人视频,学习STL,了解STL背后的真实故事! 视频链接:侯捷STL 还有很大其他视频需要的留言 第一节:STL版本和重要资源 STL和标准库的区别 ...

  9. STL顺序容器用法自我总结

    顺序容器类型:vector.deque.list.forward_list.string.array. queue(单向队列)底层也是用deque(双端队列)实现的 a.swap(b); swap(a ...

随机推荐

  1. css布局之块上下左右居中

    以下方案的通用代码: HTML code: <div class="box"> <div class="content"> <!- ...

  2. HDU2008-数值统计

    描述: 统计给定的n个实数中,负数.零和正数的个数. 代码: #include<stdio.h> #include<string.h> #include<iostream ...

  3. html 浮动元素

    在CSS布局中分为内联元素(display:inline)和块状元素(display:block),块状元素默认会占据一行,可设置高度宽度以及边距,而内联元素不会也不能设置.常见的内联元素有:a.sp ...

  4. 在Oracle 11g中用看Oracle的共享内存段---------IPCS

    很早之前,在一次讲课了,用了命令ipcs,发现oracle的共享内段好小,如下: oracle@mydb ~]$ ipcs -a ------ Shared Memory Segments ----- ...

  5. Eclipse4.3正式版已发布

    Eclipse4.3正式版已发布,传送门http://www.eclipse.org/downloads/

  6. PHP的一些函数

    //进制转换类 base_convert //字符转十六进制 binhex

  7. python初探-copy

    python中,数据的拷贝有以下三种形式:赋值.浅copy和深copy.根据类型的不同,可以把数据分成以下两类:字符串和数字为一类,其他(包括列表.元祖.字典...)为一类. 在python中有池的概 ...

  8. [LeetCode]题解(python):084-Largest Rectangle in Histogram

    题目来源: https://leetcode.com/problems/largest-rectangle-in-histogram/ 题意分析: 给定一个数组,数组的数字代表这个位置上的bar的高度 ...

  9. web应用中Spring ApplicationContext的动态更新

    在web应用中时常需要修改配置,并动态的重新加载ApplicationContext.比如,设置和切换数据库.以下给出一个方法,并通过代码验证可行性. 方法的基本思路是,为WebApplication ...

  10. Java学习之DBUtils工具的学习

    简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影 ...