《C++ Primer》读书笔记第三章-2-标准库类型vector
来源:互联网 发布:潍柴动力网络测评答案 编辑:程序博客网 时间:2024/04/30 12:32
笔记会持续更新,有错误的地方欢迎指正,谢谢!
vector表示对象的集合—>容器,容器里面装的都是同一个类型的对象。 要想使用vector,必须包含适当的头文件: #include <vector>
using std::vector;
C++语言有类模板(class template)。类模板本身不是类,可以看成一份类的说明,在我的理解中情况是这样的:
以vector<T>
为例: vector<int> vec1;
//vec1保存int对象 vector<vector<int>> vec2;
//vec2保存vector<int>
对象
定义和初始化vector对象
下面列出了所有的初始化方法,挑顺手的用就行:
默认初始化
vector<int> v1;
//默认初始化,空vector
值初始化
值初始化:通常使用圆括号或直接等号,但如果使用花括号但提供的值又不能用来列表初始化时,编译器也会尝试用值初始化。 vector<int> v2(v1);
等价于vector<int> v2 = v1;
初始化指定数量的元素
vector<string> v3(5, "c");
//有5个 字符串”c” vector<int> v4(5);
//5个0
列表初始化vector对象
vector<int> v5{1, 2, 3};
是列表初始化还是值初始化?
例子: vector<int> v3(10, -1);
//正确,10个-1,但不是列表初始化。 vector<int> v4(10);
//正确,10个0,默认初始化。vector<int> v5{10, -1};
//正确,列表初始化,有两个元素:10,-1。
string比int特殊一点:(看看就好,不深究) vector<string> v6("hi");
//错误 vector<string> v7{"hi"};
//正确,列表初始化 vector<string> v8(10);
//正确,默认初始化,10个空string对象。 vector<string> v9{10};
//正确,默认初始化,10个空string对象。 vector<string> v10(10,"hi");
//正确,10个”hi”元素,但不是列表初始化。 vector<string> v11{10,"hi"};
//正确,10个”hi”元素,但不是列表初始化。
总结:上述只有v5和v7是列表初始化,所以,想要列表初始化,必须使用花括号,且花括号里的 值类型 必须与 定义的类型 一致。
向vector对象中添加元素
尾插,就是在后面插(好像有点不对劲2333):push_back(值)
在开始时创建空的对象,在运行时再添加元素,这个做法与C和Java等其他语言都不太一样,但这样很爽呀,这是一个容量动态增长的容器。
其他vector操作
v.empty()
//返回true。 v.size()
//返回vector::size_type。 v[n]
//n为下标,下标只能访问元素,不能创造添加元素,添加元素只能用Push_back(值)。
很不幸,通过下标访问不存在的元素的行为是很常见的,会导致缓冲区溢出,产生很严重的后果,以致出现安全问题。
缓冲区溢出:向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。(恐怖.avi)
解决方法:使用 范围for循环(但是千万不能在 范围for循环 中向vector对象添加元素,这是使用vector的第一个限制),或迭代器。 v1=v2;
//拷贝替换,前提是同类型元素。 ==,!=,<,<=,>,>=
//以字典顺序进行比较。
- 《C++ Primer》读书笔记第三章-2-标准库类型vector
- 《C++ Primer》读书笔记-第三章 03 标准库类型vector
- 《C++Primer》 第三章 标准库类型
- C++primer第三章:标准库类型
- C++ Primer 第三章 标准库vector类型
- C++primer(第五版)第三章中标准库类型Vector、迭代器和数组
- c++ primer读书笔记-第三章 标准库类型
- C++ primer 读书笔记--第三章 标准库类型
- 《C++ Primer》读书笔记-第三章 02 标准库类型string
- 《C++ Primer》读书笔记第三章-1-标准库类型string
- C++primer 3.3 标准库类型 vector
- 《C++Primer》读书笔记---标准类型库
- C++Primer笔记 第三章 标准库类型
- C++Primer 学习笔记 第三章(标准库类型)
- C++primer学习笔记-第三章标准库类型
- C++primer第4版第三章标准库类型
- 【C++ Primer】【学习笔记】【第三章】标准库类型之:vector类型
- C++ primer 读书笔记系列——(2)标准库vector类型
- 用IBM Bluemix-Watson API 实现语音人机交互
- 消息队列RabbitMQ与Spring集成
- Hibernate:Could not parse mapping document from invalid mapping Could not parse mapping document
- i=i++问题
- Android Framework层重启流程
- 《C++ Primer》读书笔记第三章-2-标准库类型vector
- 使用可控硅对市电斩波降压(调光)
- linux系统虚拟机安装
- Python时间序列LSTM预测系列教程(8)-多变量
- Open JDK patched with font fix
- Linux系统编程——进程的控制:结束进程、等待进程结束
- BZOJ3572: [Hnoi2014]世界树(虚树)
- C语言实现的数字闹钟
- Easyui的DateBox控件和DateTimeBox控件