- 两个 vector 的相等性判断,
v1 == v2
,对容器内的每一个元素,调用==
1. 两种搭配
coll.reserve() ⇒ coll.push_back()
coll.reserve()只预留空间,不进行初始化,也即coll.reserve()完了之后容器的size()仍为0,
coll.resize() ⇒ coll[i]
std::vector<int> v; v.resize(10); // 没有这句话 // 或者使用 v.reserve(10) // 编译器都会报错 for (size_t i = 0; i < 10; ++i) v[i] = i;
2. vector 为空的判断
也即coll.empty()
的内部实现:
bool empty() const
{
return first == last;
}
3. 所能容纳的数据类型
如vector
这般的模板容器std::vector<T>
,即是什么类型的对象都可往里装,但一个容器实例仅可存储同一数据类型的数据,也即std::vector<T>
是非异质型(non-heterogeneous)容器;
4. push_back 一个新元素
对于一个容器,调用其成员push_back
函数,添加新的数据成员,则新添加的数据的位置及其对应的迭代器为:
下标位置
pos = coll.size()-1;
迭代器为:
ite = coll.end() - 1;
5 .resize() 的两个重载
void resize(size_type _Newsize);
// 调用成员的默认构造
void resize(size_type _Newsize, const value_type& _Val);
// 并指定初值
比如,一种有些随机变量性质的初始化的方式:
coll.resize(sz, 1./sz);
6. .clear()
的含义
- size 为 0
- capacity 不变
所以对一个容器调用其.clear()
成员函数之后,该容器会进入到一种类似容器在初始化之前首先.reserve()
后的结果。
也即:
std::vector<int> coll = {1, 2, 3};
coll.clear();
// size == 0
// capacity == 3
std::vector<int> coll2;
coll2.reserve();
// size == 0
// capacity == 3