首页 > 代码库 > 容器库概览

容器库概览

1. 对容器可以保存的元素类型的限制

顺序容器几乎可以保存任意类型的元素。特别是我们可以定义一个容器,容器中包含的是另一个容器,这种容器的定义与任何其他容器类型完全一样:

  在尖括号中指定元素类型(此种情况下,是另一种元素类型)

  vector<vector<string>> lines;  //vector的vector,此处lines是一个vector,其元素类型是string的vector

容器操作:

  类型别名:

    iterator      此容器类型的迭代器类型;        const_iterator   可以读取元素,但不能修改元素的迭代器类型

    size_type       无符号整数类型,足够保存此种容器类型最大可能容器的大小

    difference_type   带符号整数类型,足够保存两个迭代器之间的距离

    value_type     元素类型

      reference     元素的左值类型;与value_type&含义相同;  const_reference 元素的const左值类型

  构造函数:

    C c;      默认构造函数,构造空容器

    C c1(c2);    构造c2的拷贝c1

    C c(b, e);    构造c,将迭代器b和e指定的范围内的元素拷贝到c

  赋值与swap:

    c1 = c2    将c1中的元素替换为c2中元素

    c1 = {a,b,c...}将c1中的元素替换为列表中元素

    a.swap(b)   交换a和b的元素  ;swap(a,b)相同

  大小:

    c.size()    c中元素的数目

    c.max_size()   c中可保存的最大元素项目

    c.empty()   若c中存储了元素,返回false,否则返回true

迭代器:

    类似于指针类型,迭代器也提供了对对象的间接访问,就迭代器而言,其对象是容器中的元素或者string对象中的字符。使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素,迭代器有有效和无效之分,这一点和指针差不多

    有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一位置

  使用迭代器:

    和指针不一样的是,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员,譬如这些类型都拥有名为begin和end的成员,

    其中begin成员负责返回指向第一个元素(或第一个字符)的迭代器;end成员则负责返回指向容器“尾元素的下一位置”的迭代器,也就是说,

    该迭代器指示的是容器的一个本不存在的“尾后元素”,这样的迭代器没什么意义,仅是个标记而已,表示我们处理完了容器中的所有元素

    end成员返回的迭代器常被称为尾后迭代器或者简称为尾迭代器,特殊情况下,如果容器为空,那么begin和end返回的是同一个迭代器

 

 

    

     

容器库概览