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 ...
随机推荐
- 第 8 章 容器网络 - 054 - 准备 macvlan 环境
准备 macvlan 环境 macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置 ...
- Axure XMind整理交互思路
本部分主要是为了研究Xmind思维导图总结设计原型的思路
- FireFox(火狐)浏览器的相关问题
如何加快FireFox(火狐)浏览器浏览网页速度 大部分网页加载缓慢的原因:1.宽带连接.网速不稳定2.浏览器本身问题,如果多开窗口浏览会占大量内存,而且磁盘空间没有做过优化,就这样电脑资源不够用,也 ...
- layui: 子iframe关闭/传值/刷新父页面
https://www.cnblogs.com/jiqing9006/p/5135697.html layer iframe层的使用,传参 父层 <div class="col-x ...
- toad 快捷键大全
现在在企业中,操作oracle数据库的客户端,除了PL/SQL外,使用的较多的就是TOAD了!toad记得F9执行全部sql和Ctrl + Enter执行选中sql就行了,有啥需要的再查吧.快捷设置在 ...
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 创建异步树形菜单
jQuery EasyUI 树形菜单 - 创建异步树形菜单 为了创建异步的树形菜单(Tree),每一个树节点必须要有一个 'id' 属性,这个将提交回服务器去检索子节点数据. 创建树形菜单(Tree) ...
- RLE Plots: relative log expression
RLE Plots: Visualising Unwanted Variation in High Dimensional Data 参考:RLE Plots: Visualising Unwante ...
- genymotio安装apk包提示 ...abi ...cpu
下载 Genymotion-ARM-Translation_v1.1 (1).zip 地址:http://qc1.androidfilehost.com/dl/Q-YDDKt4QaFNvKh62ppO ...
- Arthur and Brackets CodeForces - 508E (贪心,括号匹配)
大意: n个括号, 位置未知, 给出每对括号左右间距, 求输出一个合法括号序列. 最后一个括号间距一定为1, 从右往左遍历, 每次括号划分越小越好. #include <iostream> ...
- mac中 hosts地址
/etc/hosts 拉出hosts文件,修改之后再拉进去