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 }

 

  

时间: 2024-11-01 18:21:42

STL之顺序容器的相关文章

STL - 常用顺序容器代码

不多说,看代码 #include <iostream> #include <vector> #include <deque> #include <list> #include <forward_list> #include "ContainerTest.h" #include "ContainerUtil.h" using namespace std; void ContainerTest::run() {

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>

WF 4.0基础篇(四) 顺序容器Sequence与CodeActivity

本节主要介绍如何在WF4.0的流程中添加多个Activity,以及如何自定义Activity 本文例子下载: http://files.cnblogs.com/foundation/SequenceSample.rar http://files.cnblogs.com/foundation/CodeActivitySample.rar 顺序容器Sequence 与CodeActivity 顺序容器Sequence 类名 System.Activities.Statements.Sequence

[C++ 面试基础知识总结] 顺序容器

[C++ 面试基础知识总结] 顺序容器 参考书籍:<C++ Primer> 目录 C 面试基础知识总结 顺序容器 目录 顺序容器与选择 迭代器 容器的初始化和赋值 顺序容器操作 添加元素 访问元素 删除元素 改变容器大小 迭代器失效 vector对象的增长 string 操作 改变string 搜索string 数值转换 容器适配器 栈stack 队列queue 顺序容器与选择 顺序容器类型: vector 可变大小数组 deque 双端队列 list 双向链表 forward_list 单向

c++-C++中顺序容器 erase,C++ Primer是否出错

问题描述 C++中顺序容器 erase,C++ Primer是否出错 C++ Primer中文第五版9.3.3的P312删除多个元素原文: elem1=slist.erase(elem1,elem2); //调用后,elem1==elem2 迭代器elem1指向我们要删除的第一个元素,elem2指向我们要删除的最后一个元素之后的位置. 这句话是不是错了.调用slist.erase(elem1,elem2)删除了slist从elem1到elem2(包含elem2)的元素,指向elem2后的元素.那

顺序容器

一.顺序容器的相关操作: 示例: 1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 6 using namespace std; 7 int main() 8 { 9 vector<int> a; 10 list<int> b; 11 deque<int> c; 12 13 vector<int>::

C++Primer笔记之顺序容器的使用详解_C 语言

顺序容器,它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器.标准库里定义了三种类型:vector(支持快速随机访问).list(支持快速插入.删除).deque(双端队列)容器只定义了少量操作,大多数额外的操作由算法库提供.容器内元素的类型约束:1.元素类型必须支持赋值运算:2.元素类型的对象必须可以复制.这是容器元素类型的最低要求,如果想支持一些其他特殊要求,则必须具备相关的性质. 可以定义容器的容器vector< vector<int> > l

STL之关联容器

 关联容器支持高效的关键字查找和访问.两个主要的关联容器(associative-container)类型是map和set.标准库提供8个关联容器,它们的不同体现在三个维度上: 或者是一个set,或者是一个map 或者要求不重复的关键字,或者允许重复关键字 按顺序保存元素,或无序保存. 允许重复关键字的容器的开头名字中都包含单词multi:不保持关键字按顺序存储的容器的名字都以单词unordered开头. 类型map和multimap定义在头文件map中:set和multiset定义在头文件se

关于STL中set容器的一些总结_C 语言

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作.vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入.排序.删除.查找等.让用户在STL使用过程中,并不会感到陌生. 关于set,必须说明的是set关联式容器.set作为一个容器也是