C++ 容器

来源:互联网 发布:java中基本数据类型 编辑:程序博客网 时间:2024/06/07 02:38

独创3S法(Six Step Solve)

1.名称

   容器

2.概念

           在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处,就是“容器类是一种对特定代码重用问题的良好的解决方案。

3.通俗的理解

           就相当于一种类,只不过这种类是专为数据的存放以及处理而准备,对数据有其独特的管理方法。

4.存在的意义

    以数组作为例子,在定义数组的时候往往需要指定其空间的大小,但如果在使用中用不了这么多或者不够用就会很为难,内存的利用效率就不高,而容器的存在就可以帮你处理这些细节上的问题,你也不会再纠结于定义一个数组时还要考虑多大。容器会自动为你申请内存和释放内存,并同时用自己最优化的算法来进行。

5.使用的方法

举一个小例子看一下,其实发现如果不是特别较真的话,好好阅读MSDN中这些容器的相关元素的函数即可
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector< int > num;
    num.push_back( 50 );
    num.insert(num.begin(), 10);
    num.insert(num.end(), 20);
    num.push_back( 60 );
    num.push_back( 40 );
    cout << num.size() << endl;
    for(int i = 0; i < num.size(); i++)
        cout << num[i] << " ";
    cout << endl;
    num.erase(num.begin());
    cout << num.size() << endl;
    for(int i = 0; i < num.size(); i++)
        cout<< num[i] <<" ";
    cout << endl;
    return 0;
}

6.需要注意的问题

标准容器类

说明

顺序性容器

vector

从后面快速的插入与删除,直接访问任何元素

deque

从前面或后面快速的插入与删除,直接访问任何元素

list

双链表,从任何地方快速插入与删除

关联容器

set

快速查找,不允许重复值

multiset

快速查找,允许重复值

map

一对多映射,基于关键字快速查找,不允许重复值

multimap

一对多映射,基于关键字快速查找,允许重复值

容器适配器

stack

后进先出

queue

先进先出

priority_queue

最高优先级元素总是第一个出列


0 0