一、顺序容器的分类

  顺序容器: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. C#隐藏桌面图标和任务栏

    最近因为项目需要需要实现桌面图标和任务状态栏的隐藏功能,实现的方式很多,比如修改注册表值,调用windows API函数等.经过一番的查阅,这个功能暂时实现了,或许不是很好的方法,但是我预期的效果达到 ...

  2. 五毛的cocos2d-x学习笔记07-计时器、数据读写、文件读写

    调度器: 定时任务是通过调度器实现的.cocos2d-x推荐用调度器而不是其他方法实现定时任务.Node类都知道如何调度和取消调度事件. 有3种调度器: 默认调度器:schedulerUpdate() ...

  3. Spring_database_Template

    配置applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...

  4. ubuntu 16.04环境配置

    ubuntu 16:1.源cp /etc/apt/sources.list /etc/apt/sources.list.bkpvi /etc/apt/sources.list-+{    deb ht ...

  5. 5.6.2 Number类型

    Number是与数字对应的引用类型.要创建Number对象,可以在调用Number构造函数时向其中传递相应的数值.例如: var numberObject=new Number(10); 与Boole ...

  6. 帝国cms后台 不同栏目发布字段不同

    在同一数据表下的两个栏目,由于功能不同,也需要建立不同的字段,问题是建立完不同字段后,其数据表下的两个栏目都有发布字段.这里教大家,不同栏目下发布内容,不同字段.修改数据模型中 录入表单模板 代码.底 ...

  7. 激活Windows 10 正式版

    原文 http://jingyan.baidu.com/article/27fa732684b5f646f8271ff4.html Windows 10只提供为期一年的免费升级.因此,不要无限拖延期自 ...

  8. HDU 1090 A+B for Input-Output Practice (II)

    #include <cstdio> int main() { int n,a,b; scanf("%d",&n); ; i<=n; i++) { scan ...

  9. 将文件从数据库(MySQL)中进行读取

    package com.play; import java.io.FileOutputStream; import java.io.OutputStream; import java.sql.Blob ...

  10. mahout贝叶斯算法开发思路(拓展篇)2

    如果想直接下面算法调用包,可以直接在mahout贝叶斯算法拓展下载,该算法调用的方式如下: $HADOOP_HOME/bin hadoop jar mahout.jar mahout.fansy.ba ...