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 ...
随机推荐
- Linux中apt与apt-get命令的区别与解释
2019-01-15 14:35:39 随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版 ...
- win下使用VM虚拟机安装Linux系统
自己电脑上还是有个自己的虚拟机比较方便,之前用的Ubuntu,发现卡得不行. 现在装了个轻量级的Lubuntu,速度提升了不少. 1.下载Lubuntu,安装. 2.进入,设置root密码,初始化ro ...
- Alibaba Java诊断工具Arthas之快速安装和简单使用
Alibaba Java诊断工具Arthas简单介绍 : 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception ...
- android--------自定义控件 之 ViewGroup
前面几篇讲了自定义控件的组合控件,地址:http://www.cnblogs.com/zhangqie/p/8985612.html 今天这篇博文主要来说说 自定义控件的 ViewGroup. 什么是 ...
- 报错 hint: Updates were rejected because the remote contains work that you do 解决方法
1. git pull origin master --allow-unrelated-histories 2.git pull origin master 3.git init 4.git remo ...
- matlab:统计矩阵中某元素的个数
三种统计方法: A=ceil(rand(,)*); a=; %第一种 sum(A(:)==a): %第二种 length(find(A==a); %第三种 logical=(A=a); sum(log ...
- python记录_day27 tcp/ip五层模型
## 网络协议按照不同的功能分为多层,目前存在的模型有osi七层模型.tcp/ip五层和tcp/ip四层模型 我们主要用的是tcp/ip五层模型 那么每层的作用是什么呢,现在就从设计者的角度自下到上逐 ...
- laravel的重定向
Route::get("redirect1", function () { // redirct的三种写法 // return redirect()->route(" ...
- jqGrid 刷新单行数据
id: 单挑数据的id jQuery('#special-table').jqGrid( 'setRowData',id,{ status: '3', //所要修改的列 act: '<a dat ...
- PAT 1031 Hello World for U
1031 Hello World for U (20 分) Given any string of N (≥) characters, you are asked to form the char ...