本文转载自: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课视频教程下载地址: