• STL之顺序容器


    顺序容器:

      vector:数组

      list:链表

      deque:双端数组

    顺序容器适配器:

      stack:堆栈

      queue:队列

      priority_queue:优先级队列

      deque是一个动态数组
      deque与vector非常类似;
      deque可以在在数组开头和末尾插入和删除数据;

     1 #include <deque>
     2 #include <algorithm>
     3 
     4 deque<int>::iterator iElemetnLocater;
     5 for(iElementLocater a.begin();
     6     iElementLocater != a.end();
     7     ++iElemetLocater){
     8 //distance函数
     9     size_t nOffert = distance(a.begin(), iElementLocater);
    10     cout << "a["<<nOffset<<"]" <<*iElementLocater << endl;
    11 
    12 }

      list 类模板:

      vector向量只能在末尾插入数据;
      deque可以在开头和末尾拆入;

      顺序容器 STL list类(双向链表)

        list是一个模板类;
        在list开头插入元素;
        在list末尾插入元素;
        在list中间插入元素;  
        删除list中的元素;
        对list中元素进行反转和排序;

     1 #include <iostream>
     2 #include <list>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8         std::list<int> a;
     9         std::list<list>::iterator iter;        
    10 
    11         a.push_front(4);   //头插
    12         a.push_front(3);
    13         a.push_front(2);
    14         a.push_front(1);
    15         a.push_back(5);   //尾插
    16         
    17         iter = a.begin();
    18         ++iter;                 
    19         a.insert(iter, 10);     //通过迭代器位置的改变来插入数据;
    20         //在末尾拆入4个20
    21         a.insert(a.end(), 4, 20)        
    22 
    23 
    24         for(std::list<int>::iterator it=a.begin();
    25             it!=a.end();it++){
    26             std::cout << *it << std::endl;
    27         }     
    28         return 0;
    29 }
    30  
     1 #include <vector>
     2 #include <list>
     3 #include <deque>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     vector<string>  s_vec;
    10     s_vec.push_back("hello");
    11     s_vec.push_back("c++");
    12     s_vec.push_back("STL");
    13 
    14     //利用迭代器,vector初始化list
    15     list<string>  slist(s_vec.begin(), s_vec.end());
    16     
    17     const list<int>::size_type  list_size =64;
    18     list<string> slist(list_size, "hello";  
    19 
    20     list<int>       I_list;
    21     
    22     vector<int> ivec;   //默认构造函数
    23     ivec.push_back(1);
    24     ivec.push_back(2);
    25     ivec.push_back(3);
    26     
    27     vector<int> ivec2(ivec);    //使用ivec初始化ivec2;
    28     vector<int> ivec2(ivec);    //使用ivec初始化ivec2;
    29 
    30     char *words[] = {"stately", "plump", "buck"};
    31     size_t words_size = sizeof(words)/sizeof(char*);
    32 
    33     //利用指针 数组初始化list容器
    34     list<string> words(words, words+words_size):
    35 
    36     const list<int>::size_type list_size = 64;
    37     list<string> slist(list_size, "hello");  //list里面64个hello;
    38     list<int> ilist(list_size);     //ilist默认64个0;
    39 
    40     vector<Foo> a;      //不进行初始化,不用调用Foo的构造函数;
    41     vector<Foo> b(10, 1);   //进行了初始化,而且调用的是带参数的构造函数;
    42 
    43     vector<vector<string> > lines;  //vector里面存放vector
    44     list<vector<string> > list_lines;   //list里面存放vector
    45 
    46     //list<int>  ilist(ivec);       //Error;
    47     return 0;
    48 }

      

  • 相关阅读:
    JSP语法学习笔记
    jsp 自定义标签
    java排序算法
    Linux系统rootpassword改动
    人生中第一次面试——北漂18年(1)
    msgsnd的一个小问题
    推荐系统中的矩阵分解演变方式
    FZU 2124 FOJ 2124 吃豆人【BFS】
    啦啦啦啦、新人学习中。。
    【Linux】线程并发拷贝程序
  • 原文地址:https://www.cnblogs.com/chris-cp/p/4513406.html
Copyright © 2020-2023  润新知