【C++】STL 容器 - vector 动态数组容器 ① ( vector 动态数组容器功能简介 | vector 动态数组默认无参构造函数 )






一、vector 动态数组



1、vector 动态数组简介


C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 的 vector 容器 是一种 " 动态数组 " , 该容器 的 大小 可以在运行时 动态 增长 或 缩小 ;


2、vector 动态数组容器功能简介


vector 动态数组 容器 提供了一系列的 增 / 删 / 查 / 改 / 排序 等功能 ;

  • 动态改变大小 : vector 动态数组 可以在运行时 动态 改变大小 ;
    • 使用 push_back() 函数 动态 添加元素 ;
    • 使用 pop_back() 函数 动态 删除元素 ;
  • 随机访问 : vector 动态数组 提供了 随机访问迭代器 , 可以像 访问数组 一样访问 vector 中的元素 ; 类似于 Java 中的 ArrayList 数组列表集合 ;
  • 插入元素 : vector 提供了 insert() 方法 , 可以在任何位置 插入元素 ;
  • 删除元素 : vector 提供了 erase() 方法 , 可以在任何位置 删除元素 ;
  • 排序元素 : vector 提供了 sort() 方法 , 可以对元素进行排序操作 ;
  • 查找元素 : vector 提供了 find() 方法 , 可以对元素进行查找 ;
  • 迭代器 : vector 提供了 前向 和 反向 迭代器 , 可以遍历容器中的元素 ;




二、vector 动态数组默认无参构造函数




1、vector 动态数组默认构造函数


下面直接声明 vector 动态数组变量 , 可以在栈内存中创建 vector 容器对象 , 并使用该 动态数组 容器 ;


vector 动态数组 容器 是使用 模板类 实现的 , vector 对象 的 默认构造形式 如下 :

vector<T> vecT; 

上述默认构造形式 一旦声明 , 该 vector 容器就初始化成功 , 可以向其中插入数据 ;


存放普通数据类型的 vector 容器 : 其中的 元素类型 是 泛型 T , 因此 vector 容器中可以 装 任意类型的 元素 , 可以是 基本数据类型 , 如 int / float 类型 ;

// 存放 int 类型元素的 vector 动态数组容器
vector<int> vecInt;  
   
// 存放 float 类型元素的 vector 动态数组容器   	
vector<float> vecFloat;  

存放 类对象 的 vector 容器 : vector 动态数组容器中 也可以装 类对象 元素 ;

// 存放 string 类型元素的 vector 动态数组容器
vector<string> vecString;

存放 自定义类对象 的 vector 容器 : 存放的 类对象 还可以是 自定义的 类对象 ;

// 自定义类
class Student{
    
    };

// 存放 Student 类对象 元素的 vector 动态数组容器
vector<Student> vecS; 

存放 自定义类指针 的 vector 容器 :

容器元素的存放是按值复制的方式进行的 , 所以此时 Student 类必须提供 拷贝构造函数 ;

一般情况下 , 不会直接存放类对象 , 因为每次存取都要调用 拷贝构造函数 进行 , 非常消耗资源 , 这里推荐存放 指向类对象的指针 或 引用 , 避免二次拷贝的情况 ;

// 自定义类
class Student{
    
    };

// 存放 指向 Student 类对象的指针 类型的 元素的 vector 动态数组容器
vector<Student*> vecpS;	

2、代码示例 - vector 动态数组默认构造函数


使用 vector 动态数组容器 前 , 需要导入 <vector> 头文件 ;

#include "iostream"
using namespace std;
#include "vector"

按照如下 默认构造 形式 创建 vector 容器对象即可 , 将泛型 T 设置为不同的类型 , 即可存储不同类型的元素 ;

vector<T> vecT; 

代码示例 :

#include "iostream"
using namespace std;
#include "vector"

// 自定义类
class Student{
    
    };

int main() {
    
    

	// 存放 int 类型元素的 vector 动态数组容器
	vector<int> vecInt;

	// 存放 float 类型元素的 vector 动态数组容器   	
	vector<float> vecFloat;

	// 存放 string 类型元素的 vector 动态数组容器
	vector<string> vecString;

	// 存放 Student 类对象 元素的 vector 动态数组容器
	vector<Student> vecS;

	// 存放 指向 Student 类对象的指针 类型的 元素的 vector 动态数组容器
	vector<Student*> vecpS;
	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/135051210