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 ...
随机推荐
- python+kafka,从指定位置消费数据
# @staticmethoddef get_kafka_reviews(self): # print type(self.bootstrap_servers) consumer = kafka.Ka ...
- HeadFIrst Ruby 第七章总结 hashes
前言 这一章节介绍了 Ruby 中 hash 这一数据类型的用法和特征. Hash 的定义 与 array 的对比 最大的不同: An array can only use integers as i ...
- 雷林鹏分享:使用 XSLT 显示 XML
使用 XSLT 显示 XML 通过使用 XSLT,您可以把 XML 文档转换成 HTML 格式. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT(eXtensible ...
- Tomcat ----> 学习笔记
源码之几个常见类和接口的关系 在学习Servlet的时候经常见到以下几个合成单词和非合成单词:Servlet.GenericServlet.HttpServlet.它们之间有联系的.接下来我把它们的联 ...
- 【调试】Idea如何远程debug之SpringBoot jar包启动
一.Java -jar启动添加如下参数 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address= -Xdebug是通知JVM工 ...
- apiCloud 调微信支付,调支付宝支付
data里面的参数信息,需要从后台接口中调取,点击查看微信支付详情,https://docs.apicloud.com/Client-API/Open-SDK/wxPay 首先,需要在config.x ...
- DRF之视图和router
1. 视图 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 1.1. 请求与响应 1.1.1 Request RES ...
- Leetcode 144
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- CRM WEB UI 03搜索界面新建按钮调到详细界面
这个和上一个差不多,简单说下: 1.因为NEW是在创建搜索界面的时候加的,所以此时只需在结果界面重定义NEW事件: method EH_ONNEW. OP_NEW( ). endmethod. 2.结 ...
- Fiddler 抓包工具总结【转载】
原博主连接在文章底部 Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也蛮费劲, ...