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 }
  • 相关阅读:
    小程序左滑删除之<movable-area/>实现
    小程序省市区县分割
    小程序自定义底部按钮适配Iphone X
    小程序处理图片加载失败的问题
    Notepad++ 使用技巧
    IDEA 在打包项目时遇到的ERROR
    Markdown学习
    Ubuntu操作系统(文件传输)
    数据 恢复----判断Raid盘序及校验方向
    数据恢复----重组raid5解析
  • 原文地址:https://www.cnblogs.com/chris-cp/p/4592652.html
Copyright © 2011-2022 走看看