《实用C++》第46课 C++容器之动态数组vector①

本文深入解析C++中动态数组vector的原理与应用,探讨vector如何解决数组大小不确定的问题,介绍其头文件、命名空间及定义方式,演示多种初始化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转载自:VC驿站

https://www.cctry.com/thread-290320-1-1.html

1、为什么有vector?什么是动态数组vector?
既然是数组,那么我们先来说说数组的概念,关于数组咱们之前讲解过,例如,一个int的数组,定义如下:
int arr_int[100] = {0};
对吧?这个数组里面有100个元素,那如果我这个学校有1000个学生,那么可能我就要定义数组的大小是1000个,本身是普通的数组,所以要求在定义的时候就给定大小。不然系统无法判断数组所占用的内存。但是现实生活中往往有很多时候是确定不了大小的,例如qq的服务器,他要同时接受N多人的连接,全国有上亿的人登陆qq,那么如果让你定义一个数组的话,你要定义多少?固定大小的话定义多少都不合适,本身数量在增长,是个动态的大小。定义太大了浪费空间,定义太小了还不够用。所以动态数组vector就为我们解决了这个问题。他是容量大小动态变化的数组,定义vector对象的时候先不用指定数组的大小,有数据的话就往数组里面插入就可以了。vector内部自己管理存储空间,不用你操心了。

2、vector 的头文件和命名空间:
#include <vector> //注意,没有 .h
using namespace std; //在 std 标准命名空间中

3、vector 的定义:
刚才给大家说了,vector是动态数组,但是并没有说vector是什么类型的数组,那么他的类型到底是什么呢?其实他能够适应任何类型!他是一个类模板,例如:

vector<int> arr_int; //定义了一个内部元素是int的动态数组;
vector<char> arr_char; //定义了一个内部元素是char的动态数组;
vector<CStudent> arr_student; //定义了一个内部元素是CStudent的动态数组;
vector<char*> arr_pchar; //定义了一个内部元素是char*的动态数组;

怎么样?这个类模板非常方便吧,要什么类型就来什么类型,而且容量大小没有限制!

4、vector 的初始化:
初始化的方法也是有多种,咱们到 http://www.cplusplus.com/reference/vector/vector/ 这里面来看下,找到其构造函数的链接:http://www.cplusplus.com/reference/vector/vector/vector/
咱们来一一实现一下,具体演示见视频教程!

#include <vector>
int main (int argc, char* argv[])
{
  std::vector<int> one;                                //定义一个空的、元素类型是 int 的 vector 动态数组
  std::vector<int> two(4,100);               //定义一个包含4个元素,每个元素的值都是100的 vector 动态数组
  std::vector<int> three(two.begin(),two.end());  //使用 two 这个对象的迭代器,从开始到结束的所有元素来初始化当前对象
  std::vector<int> four(three);                       // 使用 three 这个对象来初始化当前对象

  int myints[] = {16,2,77,29};
  std::vector<int> five (myints, myints + sizeof(myints) / sizeof(int) ); //使用一个普通的 int 数组来初始化当前对象

  return 0;
}

5、小作业:
使用之前课程中讲解的 CStudent 类型来定义多个 vector 动态数组,并进行初始化操作!

第46课视频教程下载地址:

https://www.cctry.com/thread-290320-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值