标准模板库(STL)之 vector 列传 (二)
2016-02-24 10:31
281 查看
标准模板库(STL)之 vector 列传
两种搭配
vector 为空的判断
所能容纳的数据类型
push_back 一个新元素
resize 的两个重载
clear的含义
两个 vector 的相等性判断,
coll.reserve()只预留空间,不进行初始化,也即coll.reserve()完了之后容器的size()仍为0,
coll.resize() ⇒ coll[i]
下标位置
迭代器为:
比如,一种有些随机变量性质的初始化的方式:
6.
size 为 0
capacity 不变
所以对一个容器调用其
也即:
两种搭配
vector 为空的判断
所能容纳的数据类型
push_back 一个新元素
resize 的两个重载
clear的含义
两个 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 为 0capacity 不变
所以对一个容器调用其
.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
相关文章推荐
- eclipsejdk版本问题
- 交换两个变量的值
- register
- Fuel创建3个节点的云环境
- Maven经典错误之一:Please ensure you are using JDK 1.4 or above and not a JRE
- IP address '172.172.200.88' could not be resolved: Temporary failure in name resolution
- maven构建多模块应用
- 详解YUV420数据格式
- lintcode: Majority Number
- 喜欢的名言警句
- 码农十年总结
- mysql 存储过程
- C# default(T)
- Git用法之Git基础(上)
- 光标移动大法。。。 来自落落大神
- YUV分析
- android部分控件属性摘抄
- TBSchedule原理与实践
- eclipse快捷键
- 《Linux历史记录数控制及隶属记录数文件控制》