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 }

 

  

posted on 2015-05-18 23:52  阳台  阅读(262)  评论(0编辑  收藏  举报

导航