zoukankan      html  css  js  c++  java
  • 容器库概述

    容器类型上的操作形成了一种层次:

    • 某些操作是所有容器类型都提供的,如下表所示

    一般来说,每个容器都定义在一个头文件中,文件名与类型名相同。即,deque定义在头文件deque中,list定义在头文件list中,以此类推。容器均定义为模板类。例如对于vector,我们必须提供额外信息来生成特定的容器类型。对大多数,但不是所有容器,我们还需要额外提供元素类型信息:

    list<Sales_data> //保存Sales_data对象的list

    deque<double> //保存double的deque

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

    顺序容器几乎可以保存任意类型的元素。特别是,我们可以定义一个容器,其元素的类型是另一个容器。这种容器的定义与任何其他容器类型完全一样:在尖括号中指定元素类型(此种情况下,是另一种容器类型):

    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左值类型(即,const value_type&)

    构造函数

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

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

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

    C c{a,b,c...};       列表初始化

    赋值与swap

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

    c1={a,b,c....}       将c1中的元素替换为列表中元素(不适用array)

    a.swap(b)        交换a和b

    swap(a,b)

    大小

    c.size()           c中元素的数目(不支持forward_list)

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

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

    添加/删除元素(不适用array)

    注:在不同容器中,这些操作的接口都不同

    c.insert(args)         将args中的元素拷贝进c

    c.emplace(inits)       使用inits构造c中的一个元素

    c.erase(args)        删除args指定的元素

    c.clear()            删除c中的所有元素,返回void

    关系运算符

    ==,!=         所有容器都支持相等(不相等)操作

    <,<=,>,>=        关系运算符(无序关联容器不支持)

    获取迭代器

    c.begin(),c.end()        返回指向c的首元素和尾元素之后位置的迭代器

    c.cbegin(),c.cend()     返回const _iterator

    反向容器的额外成员(不支持forward_list)

    reverse_iterator      按逆序寻址元素的迭代器

    const_reverse_iterator  不能修改元素的逆序迭代器

    c.rbegin(),c.rend()    返回指向c的尾元素和首元素之前位置的迭代器

    c.crbegin(),c.crend()   返回const_reverse_iterator

  • 相关阅读:
    POJ 3630
    Codeforces Round #219 (Div. 2) D题
    Codeforces Round #232 (Div. 2) On Sum of Fractions
    Codeforces Round #232 (Div. 2) C
    撸呀撸的左手(KMP+DP)
    hdu poj KMP简单题目总结
    LCT总结
    bzoj1019 [SHOI2008]汉诺塔
    NOIP2016总结
    p1199八数码问题
  • 原文地址:https://www.cnblogs.com/wuchanming/p/3917448.html
Copyright © 2011-2022 走看看