vector容器的注意事项
1、容器是指对象的集合,每一个元素都是一个对象,并且对象的类型相同。可以使用索引去访问容器中的对象。
2、由于容器中存放的是对象,所以引用无法成为vector的成员。
3、容器的初始化,与string类对象的初始化基本一样,并且还可以:vector<int> v1{a,b,c};或者vector<int> v2={a,b,c};
4、vector是类模板,给它指定类型,编译器就能为它生成指定类型的模板类,称之为实例化。
5、vector对象在进行拷贝操作时,需要进行类型匹配。
6、使用拷贝初始化时,只能提供一个初始化值;如果提供的是类内初始值,则只能使用拷贝初始化或者用花括号的形式进行初始化;如果使用是的初始值列表,只能把初始值放在花括号里进行列表初始化。
7、可以只提供容器中的元素数量,而不提供初始值,这样的话,容器会自动的进行值初始化,如int类型容器,会被初始化为0。就是说自动地会进行默认值的初始化。
8、若vector对象不支持默认初始化,这样只提供元素数量是会出错的,必须提供初始值;还有如果只提供元素数量,那么只能使用直接初始化。
9、初始化容器的是容器的元素数量,还是容器元素,可以通过圆括号还是花括号区别。
10、若初始化时使用了花括号的形式但是提供的值又不能用来列表初始化,就要考虑到用花括号中的值来构建容器对象。也就是说,如果列表中的元素无法用来初始化容器,编译器会尝试进行默认初始化。
11、在程序运行时,动态地添加元素到vector对象中,要注意,使用循环体时,循环体内部的有关添加元素的语句,不能使用范围for语句。
12、vector的其他操作中:v1==v2 v1和v2相等,当且仅当两者的元素数量相同并且相同位置上的元素也相同。
13、使用size_type类型时,需要指明vector对象的具体类型,例如vector<int>::size_type;
14、两个vector对象进行比较时,容器中的值必须是可以比较的。也就是说如果容器中对象是类类型的,那么他们定义的类中必须有支持比较的操作,也就是成员函数。
15、只要vector对象不是一个常量,就可以对下标运算符返回的元素进行赋值操作。也可以通过下标运算符获得相应位置的元素。
16、若定义vector对象时如下:vector<int> v1; 那么v1当中没有任何元素,是空对象,不能对其采用下标运算符的方式进行赋值,也就不能去访问。vector对象以及string对象可以使用下标运算符去访问已存在的元素,但是不能访问未存在的元素
也就不能添加元素。不然的话,会出现缓冲区溢出,这种操作编译器无法检测出来,运行时会产生无法预知的值,是应用程序出现安全问题的一个重要的原因。
vector容器的注意事项的更多相关文章
- Go语言中使用切片(slice)实现一个Vector容器
Go语言中的切片(slice)和一些内置函数能实现其他语言容器类Array.Vector的功能,但是Go内置语言包container里只提供了list.heap.ring三种容器,缺少vector容器 ...
- 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...
- C++ STL vector容器学习
STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...
- vector容器使用和assert断言关键字
C++里面的容器是个比较复杂的东西,我这篇只说vector容器怎么使用,详细的网搜. vector模板类其实是一个动态数组,跟自己用new关键字创建数组一样,只不过vector会自动帮我们用new和d ...
- C++杂谈(二)初识vector容器与迭代器
教科书中失踪的vector 很奇怪的一件事情,在当时学习C++的时候,老师并没有讲授容器的内容,当时参考的谭浩强老师的红皮C++也没有这个内容,不知为何.后来再学C++,发现容器是一个很重要的概念,在 ...
- vector容器的用法
转自一篇博客^-^: 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.p ...
- C++ Daily《2》----vector容器的resize 与 reserve的区别
C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...
- 跟我一起学STL(2)——vector容器详解
一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...
- vector容器+iterator迭代器
关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm 关于iterator迭代器的描述,可参考http://www.cppblog.c ...
随机推荐
- 生成更大的陆地 Making A Large Island
2018-10-06 19:44:18 问题描述: 问题求解: 经典的求连通块问题的扩展,问题规模不大,可以暴力求解. 解法一.Brute Force O(n^4) int[][] dirs = ne ...
- Python 编程快速上手 第八章总结
在下面函数中的()中,可为相对路径,也可为绝对路径. 获知当前目录,改变当前目录,查看当前目录 更改当前目录:os.getcwd() 改变当前目录:os.chdir() 查看当前目录:os.listd ...
- 雷林鹏分享:C# 可空类型(Nullable)
C# 可空类型(Nullable) C# 可空类型(Nullable) C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 nu ...
- android -------- 混淆打包报错(warning - InnerClass annotations are missing corresponding EnclosingMember annotations)
最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations ...
- 2.2 UML用例模型
参与者(Actor) 参与者(注:有另一种翻译“执行者”) 代表位于系统之外并和系统进行交互的一类事物(人.物.其他软件子系统等) 通过它,可以对软件系统与外界发生的交互进行分析和描述 通过它,可以了 ...
- dp 二维乃至多维背包
洛谷P1855 榨取kkksc03 分析:套路是很明显的01背包,但是这时受约束的变量有两个了,这种情况下就该用多维背包了 分析方法一样的,用dp[i][j][k]表示从前i个愿望中挑选总时间和总金钱 ...
- 6月13 ThinkPHP控制器
控制器 控制器是MVC模式中的核心,tp默认有一个Index控制器: 1.控制器的命名规则:新建一个主页面的控制器 在JiaoWu/Home/Controller下新建一个文件:MainControl ...
- STL中的拷贝替换算法(so easy)
#include"vector" using namespace std; #include"string" #include"algorithm&q ...
- ZCRM_DAY_IN_WEEK
FUNCTION zcrm_day_in_week. *"------------------------------------------------------------------ ...
- SVN 多分支管理
SVN 新建时可以选择性的建立三个文件夹 trunk 一般作为主开发的地方 branches 一般作为从trunk Copy过去的代码,形成分支 tags ...