C++ 概念: Container
来自cppreference.com
容器 (Container
) 是用于存储其他对象并照顾管理其所容纳的对象所用的内存的对象。
目录 |
[编辑] 要求
-
C
容器类型; -
T
元素类型; -
a
、b
C
类型对象。
[编辑] 类型
名称 | 类型 | 注意 |
---|---|---|
value_type |
T | 可擦除 (Erasable )
|
reference |
T& | |
const_reference |
const T& | |
iterator |
指向 T 的迭代器 | 向前迭代器 (ForwardIterator ) 可转换为 const_iterator
|
const_iterator |
指向 T 的常迭代器 | 向前迭代器 (ForwardIterator )
|
difference_type |
有符号整数 | 必须与 iterator 和 const_iterator 的 iterator_traits::difference_type 相同
|
size_type |
无符号整数 | 足够大以表示 difference_type 的所有正值
|
[编辑] 方法与运算符
表达式 | 返回类型 | 语义 | 条件 | 复杂度 | |
---|---|---|---|---|---|
C() | C | 创建空容器 | 后置: C().empty() == true | 常数 | |
C(a) | C | 创建 a 的副本 |
前提: T 必须可复制插入 (CopyInsertable ) 后置: a == C(a) |
线性 | |
a = b | C& | 销毁或从 b 的元素移动赋值 a 的所有元素 |
后置: a == b | 线性 | |
(&a)->~C() | void | 销毁 a 的所有元素并释放所有内存 |
线性 | ||
a.begin() | (const_)iterator | 指向 a 首元素的迭代器 |
常数 | ||
a.end() | (const_)iterator | 指向 a 尾元素后一位的元素 |
常数 | ||
a.cbegin()(C++11 起) | const_iterator | const_cast<const C&>(a).begin() | 常数 | ||
a.cend()(C++11 起) | const_iterator | const_cast<const C&>(a).end() | 常数 | ||
a == b | 可转换为 bool | std::equal(a.begin(), a.end(), b.begin(), b.end())(C++14 起) | 前提: T 必须可比较相等 (EqualityComparable ) |
若 a.size() != b.size() 则为常数[1],否则为线性
| |
a != b | 可转换为 bool | !(a == b) | 线性 | ||
a.swap(b) | void | 交换 a 与 b 的值 |
常数[2][3] | ||
swap(a, b) | void | a.swap(b) | 常数[2] | ||
a.size() | size_type | distance(a.begin(), a.end()) | 常数[3] | ||
a.max_size() | size_type | b.size() ,其中 b 是最大的可能容器 |
常数[3] | ||
a.empty() | 可转换为 bool | a.begin() == a.end() | 常数 | ||
注意 | |||||
给定
表达式 i == j 、 i != j 、 i < j 、 i <= j 、 i >= j 、 i > j 、 i - j 中,一者或二者都可以用容器 |
(C++14 起) |
[编辑] 容器数据竞争
[编辑] 其他概念
- C
- T