zoukankan      html  css  js  c++  java
  • STL之如何选择顺序容器

    一、顺序容器的分类

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

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

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

     1 #include <iostream>
     2 #include <vector>
     3 #include <list>
     4 #include <deque>
     5 
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     vector<int> Ivec;
    11     list<int>  Ilist;   //利用链表
    12     deque<int> Ideque;
    13 
    14     Ivec.push_back(10);
    15     Ivec.push_back(20);
    16     Ivec.push_back(30);
    17     Ivec.push_back(30);
    18     Ivec.push_back(30);
    19     Ivec.push_back(30);
    20     Ivec.push_back(30);
    21     vector<int>::iterator it=Ivec.begin();
    22     it++;
    23     it++;
    24     Ivec.insert(it, 59);    //插入操作比较慢,因为插入点之后的数据都需要向后移动
    25     it++;
    26     Ivec.erase(it);         //删除操作也比较慢,数组中删除同样需要移动数据
    27 
    28     sort(Ivec.begin(), v.end());    //速度比较快,sort中利用下标快速排序,
    29     //存在下标,在排好序的情况下,利用二分法查找很快;
    30     if(binary_search(Ivec.begin(), Ivec.end(), 59)){
    31         std::cout << "find 59 ok" << std::endl;    
    32     }else{
    33         std::cout << "find 59 error" << std::endl;
    34 
    35     sort(Ivec.begin(), v.end());    //速度比较快,sort中利用下标快速排序,
    36     //存在下标,在排好序的情况下,利用二分法查找很快;
    37     if(binary_search(Ivec.begin(), Ivec.end(), 59)){
    38         std::cout << "find 59 ok" << std::endl;
    39     }else{
    40         std::cout << "find 59 error" << std::endl;
    41     }
    42 
    43     Ilist.push_back(10);
    44     Ilist.push_back(20);
    45     Ilist.push_back(30);
    46     Ilist.push_back(30);
    47     Ilist.push_back(30);
    48     Ilist.push_back(30);
    49     list<int>::iterator it2=Ilist.begin();
    50     it2++;
    51     it2++;
    52     Ilist.insert(it2, 59);  //插入操作比较快,因为链表的插入不需要移动数据
    53     it2++;
    54     Ilist.erase(it2);       //在链表中直接操作指针即可
    55 
    56     Ilist.sort();           //链表中排序比较慢
    57     //二分法查找,在list是伪二分法查找,速度比较慢
    58     if(binary_search(Ilist.begin(), Ilist.end(), 59)){
    59            std::cout << "find 59 ok" << std::endl;
    60     }else{
    61         std::cout << "find 59 error" << std::endl;
    62     }
    63 
    64     //deque,可以在前端操作,操作灵活,所有的操作比vector慢一点点,分区存储,可以保存大量数据
    65     Ideque.push_back(50);
    66     Ideque.push_front(10);
    67 
    68     return 0;
    69 }
  • 相关阅读:
    修改Oracle数据库的字符集为UTF-8
    yum源的更新问题
    Spark的编译
    hadoop版本和位数的查看方法
    hadoop2.x通过Zookeeper来实现namenode的HA方案以及ResourceManager单点故障的解决方案
    zookeeper3.4.6的安装
    SQL SERVER回滚恢复误操作的数据
    SQLServer异常捕获
    111111
    sql分割函数
  • 原文地址:https://www.cnblogs.com/chris-cp/p/4592652.html
Copyright © 2011-2022 走看看