PIRMER STL笔记(第三章中提到的vector)
来源:互联网 发布:单片机直流电机调速 编辑:程序博客网 时间:2024/06/05 22:47
第三章,3.3标准库Vector类型
Vector是其中一种容器,不是一种数据类型,只是其中一个类模板,可以用来定义任意多种数据类型。
初始化方式:1.vector<T> v1;// (保存类型为T对象,默认构造函数v1为空)2.vctor<T>v2(v1);//( v2是v1的一个副本)3.vector<T>v3(n,i);//(v3中含有N个值为 i 的元素)4.vector<T>v4(n);//v4含有n个初始化值的元素。
值的初始化:如果没有指定元素的初始化式,标准库会自行提供一个元素初始化值进行值的初始化。如INT为0
vector标准库提供了对象的操作:v.empty()//v为空返回true,否则返回false。v.size();//返回v中元素的个数
v.push_back(t);在v的末尾增加一个值为t的元素。v[n]//返回v中位置为n的元素。v1=v2//把v1的元素替换为v2中元素的副本。v1==v2如果相等则返回true。
下标操作[]不能添加元素。仅能对确知已存在的元素进行下标操作。vector<int> ivec; // empty vector
cout << ivec[0]; // Error: ivec has no elements!
迭代器简介:每种容器类型都定义了自己的迭代器类型 如vector<int>::iterator iter;
每种容器都定义了一对命名为 begin 和 end 的函数,用于返回迭代器(只用于迭代器)。如果容器中有元素的话,由 begin 返回的迭代器指向第一个元素:vector<int>::iterator iter = ivec.begin();上述语句把 iter 初始化为由名为 vector 操作返回的值。假设 vector 不空,初始化后,iter 即指该元素为 ivec[0]。由 end 操作返回的迭代器指向 vector 的“末端元素的下一个”。“超出末端迭代器”(off-the-end iterator)。表明它指向了一个不存在的元素。如果 vector 为空,begin 返回的迭代器与 end 返回的迭代器相同。
vector 迭代器的自增和解引用运算 :迭代器使用自增操作符(1.4.1 节)向前移动迭代器指向容器中下一个元素。从逻辑上说,迭代器的自增操作和 int 型对象的自增操作类似。对 int 对象来说,操作结果就是把 int 型值“加 1”,而对迭代器对象则是把容器中的迭代器“向前移动一个位置”。因此,如果 iter 指向第一个元素,则 ++iter 指向第二个元素。
const_interator 每种容器类型还定义了一种名为 const_iterator 的类型,该类型只能用于读取容器内元素,但不能改变其值。
不要把 const_iterator 对象与 const 的 iterator 对象混淆起来。声明一个 const 迭代器时,必须初始化迭代器。一旦被初始化后,就不能改变它的值:const vector<int>::iterator cit = nums.begin();*cit = 1; // ok: cit can change its underlying element
++cit;// error: can't change the value of cit一旦它被初始化后,只能用它来改写其指向的元素,但不能使它指向任何其他元素,cit的值(指向地址)不能变只能改变*cit的值。
而对于const_interator
vector<int>::const_iterator it = nines.begin();
*it = 10; // error: *it is const
++it; // ok: it isn't const so we can change its value
刚好相反。
迭代器运算vector<int>::iterator mid = vi.begin() + vi.size() / 2;
- PIRMER STL笔记(第三章中提到的vector)
- C++ Pirmer 读书笔记-第三章
- 编程笔记中提到的脚本
- STL中vector使用笔记
- STL中vector的总结
- STL中vector的用法
- STL中vector的实现
- stl中vector的函数
- STL中vector的用法
- STL中vector的使用
- 第22章 度量 中提到的
- c++ pirmer 学习笔记之参数的传递
- C++的STL中向量(vector)的使用说明
- STL中容器(vector)的简单实现
- 吓人的vector(stl)
- STL学习笔记【vector】
- stl vector 笔记
- 【STL】vector学习笔记
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (multiset)
- 简单注解实现集群同步锁(spring+redis+注解)
- 自定义View实现圆形水波进度条
- QML 中的 XMLHttpRequest 对象
- HDU 4027 Can you answer these queries?(线段树)【The 36th ACM/ICPC Asia Regional 上海站网赛】
- PIRMER STL笔记(第三章中提到的vector)
- python中调用lua——(lupa)
- linux下source命令(点命令)
- 大数据系列修炼-Scala课程15
- xpath学习
- Ubuntu 16.04 安装手札
- 【数据结构和算法】java实现栈结构
- 解决华为手机无法输出Debug级别log的问题
- android开发:如何正确使用fragment