数据类型和数据结构
- 数据类型可以类比为原子,代表单个数据自身的属性,比如整型、浮点型
- 数据结构可以类比为分子,表示了一组数据的关系,是代码运算时用来组织和存储数据的方式
- 更详细的可见链接
数组
- 数组是一种数据结构,用来表示一组数据,其有以下特性
- 数组的所有元素必须为同一种数据类型
- 长度固定,一旦定义,其长度不可改变
- 可通过元素下标(索引)读取元素
- 连续存储,数组内的所有元素在内存中是连续存储的,内存地址连续
- 数组的定义方式
data_type array_name[array_size];
,其中data_type为数组中元素的数据类型,如int a[3];
就为定义了一个大小为3的整型数组a;但需要注意的是,array_size不可以是变量,必须是个常量,否则编译器很可能会报错,因此,如果想要定义不定长度的数据机构,请使用下述的容器类型 - 数组的初始化有两种方式,统一初始化和逐个初始化
- 统一初始化,使用大括号{},如
int a[2] = {1, 2};
即定义并初始化了数组a,其第一个元素为1,第二个为2;再如int arr[20] = {0};
,则该数组所有元素会被统一初始化为0 - 逐个初始化,先定义数组
int a[2];
,之后通过访问下标(索引)的方式逐个赋值,如a[0] = 1;
- 数组的循环遍历
for (int i = 0; i < array_size; i++) {
std::cout << array[i] << std::endl;
}
- 由于数组没有自动越界判断,因此常常要注意避免访问越界(超出数组的长度范围)
容器Vector
- 也是一种数据结构,可以类比与Python中的列表结构,其与数组的主要区别在于可以动态地储存数据,即支持改变长度
- 定义方式
- 首先需要引入头文件
#include <vector>
- 之后利用
std::vector<data_type> vector_name;
进行定义,除此之外,还有一些其它的定义方式,如
std::vector<int> vector_name = {1, 3, 5}; //直接赋值
std::vector<int> vector_name(5); //设定初始长度,但是不定义初始值
std::vector<int> vector_name(5, 1); //设定初始长度,并把每个元素赋值为1
- 动态调整大小可以通过内置方法
vector.push_back(value);
来实现,这里的push_back将直接把value加到容器的最后,类似于Python列表的append方法 - 获取容器的大小,内置方法
vector.size()
将返回vector的大小 - 一些其它的内置方法
vector.pop_back();
删除容器末尾的元素vector.clear();
清空容器中的所有元素vector.empty();
该方法将判断容器当前是否为空,如果为空返回true,否则返回false