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 ...
随机推荐
- 基于 Spring Cloud 完整的微服务架构实战
本项目是一个基于 Spring Boot.Spring Cloud.Spring Oauth2 和 Spring Cloud Netflix 等框架构建的微服务项目. @作者:Sheldon地址:ht ...
- tomcat ----> 源码关联/编译/....
今天在搞Servlet时想看下tomcat Servlet-API.jar的源码,按照惯性思维用以往关联SSH2框架的源码的方式去做但是结果没有成功,尝试过换不同的文件夹,起初怀疑可能是路径太深关联不 ...
- FreeBDS之ipf防火墙
FreeBSD使用手册https://www.freebsd.org/doc/zh_CN/books/handbook/index.html https://www.freebsd.org/doc/z ...
- liunx进程管理之进程介绍
关于进程 process ====================================================================================Wha ...
- liunx权限管理之高级权限
高级权限 suid,sgid,sticky ======================================================== 文件权限管理之:高级权限 问题1: 为什么 ...
- Vue音乐项目笔记(四)(搜索页面提取重写)
1.如何通过betterScroll组件实现上拉刷新 https://blog.csdn.net/weixin_40814356/article/details/80478440 2.搜索页面跳转单曲 ...
- Docker 只要一小时,零基础入门Docker(转)
转自:https://zhuanlan.zhihu.com/p/23599229 推荐:https://hijiangtao.github.io/2018/04/17/Docker-in-Action ...
- python面向对象之 类
内容梗概: 1. 类的成员 2. 类的成员-变量 3. 类的成员-方法 4. 类的成员-属性 5. 私有 1.类的成员class 类名: 方法 def __init__(self, 参数1, 参数2. ...
- MVC实战之排球计分(四)—— View设计与实现
(view)视图 视图是用户看到并与之交互的界面.对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷 ...
- React文档(七)处理事件
React元素处理事件和DOM元素处理事件很类似.下面是一些语法的不同之处: React事件的命名是用驼峰命名,而不是小写字母. 利用JSX你传递一个函数作为事件处理器,而不是一个字符串. 举个例子, ...