C++标准库封装的vector数组
目录
- 1、创建和使用vector对象
- 2、vector对象的引用
前言:
如果构建基本类型的数组或者自定义类型的数组,那么需要自己扩展数组的功能,还有很多需要自己解决的问题,比如需要防止数组越界问题。此时,可以采用C++标准库提供的vector模板,vector创建的对象包含众多封装好的函数,比如“对象名.size()”函数可以很方便的查看数组的大小。下面从定义、使用、做函数引用等方面分别进行记录,并讨论vector
对象和数组的区别。
1、创建和使用vector对象
vector对象的创建和使用语法如下:
/// 创建
vector<类型>对象名(数组长度, 元素初值)/// 取元素
对象名[下标]/// 使用对象的函数
对象名.函数名()
创建vector
对象需要指定的“类型”可以是基本数据类型或者是类类型,如果是基本数据类型可以使用固定数值进行初始化(所有元素的初值只能相同);如果“类型”是类类型,那么就会调用“默认构造函数”进行初始化。下面第一个例子为基本数据类型作为vector元素的例子:
/// 构建vector对象,指定数组长度为3,初值为666 vector<int>data(3, 666); /// 取元素 printf("%d \n", data[1]); /// 调用vector对象的函数 printf("%d \n", data.size());
第二个例子是类类型的情况,此时将会调用类的默认构造函数,用于初始化:
/// 自定义的Duck类 class Duck { public: /// 默认构造函数 Duck() { duckAge = 666; } int duckAge; }; /// 创建Duck类型的vector对象 vector<Duck>ducks(3); /// vector的元素为Duck对象,可以调用Duck对象的成员 printf("%d \n", ducks[1].duckAge);
2、vector对象的引用
vector对象和其它类型的对象在引用的定义和使用的规则相同,都采用先声明引用,再将引用指向某个对象,最后通过引用操作对象。
下面是声明vector类型的引用语法:
vector <类型名>&引用名;
使用引用作为函数参数时,最好定义常引用,防止对象被意外的更改:
void vectorSize(vector<int>&vec) { printf("%d \n", vec.size()); }
到此这篇关于C++标准库封装的vector数组的文章就介绍到这了,更多相关C++的 vector数组内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
C++ 动态数组模版类Vector实例详解
目录 1.实现机制 2.代码实现 3.测试运行 总结 1.实现机制 内部主要通过m_capacity数组容量成员和m_length数组有效长度成员来维护一个T* data数组空间. 内部默认分配一定数量大小的数组指针,每次append尾部追加的时候,无需再次分配空间,直接赋值标志length长度,假如超过当前空间容量,则再次扩大分配新的内存数组,并将旧数组拷贝至新数组及释放旧数组. Vector需要实现的public函数如下所示: inline int capacity() : 获取容量 inl
-
C++ Vector 动态数组的实现
简介 向量(Vector)是一个封装了动态大小数组的顺序容器. 向量是一个能够存放任意类型的动态数组. C++ 中 Vector 的使用 头文件 #include <vector> 需要使用 std 命名空间 using namespace std; 以下使用方法以 int 数据类型为例,使用时可自定义数据类型 注意:下文中区间为左闭右开 1. 定义(初始化)Vector vector<int> v; 创建一个空vector vector<int> v(5); 创建一个
-
C++ vector数组用法及解析
目录 一.什么是vector数组 二.vector的基本操作 vector数组的初始化 向vector中插入元素 删除元素 遍历数组 利用vector创建动态二维数组 一.什么是vector数组 vector是向量类型 vector数组是可以存放任意数据类型的动态数组 和普通数组类似,可以通过下标对数组中的元素进行引用 二.vector的基本操作 使用vector数组要在头文件中加 #include<vector> vector数组的声明 vector<int> vec;//声明一
-
C++标准库封装的vector数组
目录 1.创建和使用vector对象 2.vector对象的引用 前言: 如果构建基本类型的数组或者自定义类型的数组,那么需要自己扩展数组的功能,还有很多需要自己解决的问题,比如需要防止数组越界问题.此时,可以采用C++标准库提供的vector模板,vector创建的对象包含众多封装好的函数,比如“对象名.size()”函数可以很方便的查看数组的大小.下面从定义.使用.做函数引用等方面分别进行记录,并讨论vector对象和数组的区别. 1.创建和使用vector对象 vector对象的创建和使用
-
C++ STL标准库std::vector的使用详解
目录 1.简介 2.使用示例 3.构造.析构.赋值 3.1std::vector::vector构造函数 3.2std::vector::~vector析构函数 3.3std::vector::operator=“=”符号 4.Iterators迭代器 4.1std::vector::begin 4.2std::vector::end 4.3std::vector::rbegin 4.4std::vector::rend 4.5std::vector::cbegin(C++11) 4.6std:
-
完成OSS.Http底层HttpClient重构封装 支持标准库
OSS.Http项目对于.Net Standard标准库的支持已经迁移完毕,OSS开源系列两个最底层的类库已经具备跨运行时支持的能力.由于OSS.Http类库是几年前我参照RestSharp的思路,完成的一个轻量型Http请求框架.因为时间较久底层使用的还是HttpWebRequest,这次基本上是完全重构,这篇文章主要包含 1. HttpClient的介绍,2. 重构的思路, 3. 容易遇到的问题. 一. httpclient的基本介绍 HttpClient应该是在.net framework
-
C++ STL标准库std::vector扩容时进行深复制原因详解
目录 引子 查找原因 解决方法 结论 引子 但是笔者却发现了一个奇怪的现象,std::vector扩容时,对其中的元素竟然进行的是深复制.请看示例代码: #include <iostream> #include <vector> struct Test { Test() {std::cout << "Test" << std::endl;} ~Test() {std::cout << "~Test" <
-
Python标准库与第三方库详解
本文详细罗列并说明了Python的标准库与第三方库如下,供对此有需要的朋友进行参考: Tkinter---- Python默认的图形界面接口. Tkinter是一个和Tk接口的模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组.Tcl/Tk是由John Ousterhout发展的书写和图形设备.Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的, 目的是为了简化用户接口的设计过程.Tk工具包由许多不同的小部件,如一
-
C站最全Python标准库总结,你想要的都在这里
python标准库思维导图: 1.操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Python34' >>> os.chdir('/server/accesslogs') # 修改当前的工作目录 >>> os.system('mkdir today') # 执行系统命令 mkdir 0 建议使用 "import os&qu
-
浅谈C++标准库
目录 C++模板 C++标准库 C++ 面向对象类库 string 标准模板库 vector set list map queue priority_queue stack pair algorithm下的常用函数 C++模板 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码 模板是创建泛型类或函数的蓝图或公式 可以使用模板来定义函数和类 //函数模板 template <typename type> ret-type func-name(parameter list)
-
关于Golang标准库flag的全面讲解
目录 命令行参数 使用详解 选项语法 flag是怎么解析参数的? 自定义数据类型 短选项 小结 前言: 今天来聊聊Go语言标准库中一个非常简单的库flag,这个库的代码量只有1000行左右,却提供了非常完善的命令行参数解析功能. 命令行参数 如果你有使用过类Unix(比如MacOS,Linux)等操作系统,相信你应该明白命令参数是什么,比如下面的两条命令: $ mysql -u root -p 123456 $ ls -al 第一条命令是MySQL的客户端,其-u root和-p 123456就
-
Python标准库06之子进程 (subprocess包) 详解
这里的内容以Linux进程基础和Linux文本流为基础.subprocess包主要功能是执行外部的命令和程序.比如说,我需要使用wget下载文件.我在Python中调用wget程序.从这个意义上来说,subprocess的功能与shell类似. subprocess以及常用的封装函数 当我们运行python的时候,我们都是在创建并运行一个进程.正如我们在Linux进程基础中介绍的那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准库中的subp
-
C++标准库bitset类型的简单使用方法介绍
std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位. #include<bister> using std::bitset; 一句话定义:可自定义位数,用作记录二进制的数据类型. 一,定义和初始化 bitset<n> b; //b有n位,每位都为0; bitset<n>
随机推荐
- 功能强大的Bootstrap使用手册(一)
- 对比DB2 9和DB2 V8.x中的XML功能
- java用arraycopy实现多击事件
- java 矩阵乘法的mapreduce程序实现
- VMware Workstation Pro12安装RedHat6.4 64位教程
- Node.js实用代码段之获取Buffer对象字节长度
- 获取远程文件大小的php函数
- ThinkPHP框架表单验证操作方法
- Python基于回溯法子集树模板解决最佳作业调度问题示例
- CentOS MySQL 5.7编译安装步骤详细说明
- 如何查看MySQL连接的root密码
- Android自定义控件之开关按钮学习笔记分享
- WinForm生成验证码图片的方法
- java 分割csv数据的实例详解
- C#特性 扩展方法
- 原生javascript实现自动更新的时间日期
- 如何解决SpringBoot2.x版本对Velocity模板不支持的方案
- Android自定义ViewFlipper实现滚动效果
- JavaScript模板引擎实现原理实例详解
- Android App自动更新之通知栏下载