一、常用数据结构一览

数据结构用途
vector动态数组
stack先入后出的线性表
queue先入先出的线性表
map键值对元素集合
set无序非重复集合

持续完善与更新中…

vector

1.导入vector

vector是STL中的一个容器类,其位于std命名空间。

#include <vector>
using namespace std;

2.定义vector

vector使用一个泛型来指定vector元素的数据类型。

// 定义元素数据类型为int的vector
vector<int> int_vector;

// 定义元素数据类型为string的vector(在使用string之前先include)
vector<string> string_vector; 

3.初始化vector

定义vector时不加任何赋值语句,其本身已经初始化为一个空的vector。

与普通数组的初始化方式一样,vector也可以使用{元素1, 元素2, ... 元素n}的形式初始化多个元素,如下所示:

vector<int> int_vector = {1, 2, 3};

4.使用vector

// 通过下标取值
int first_element = int_vector[0];

// 遍历(普通方式)
int current_vector_element;
for (int i = 0; i < int_vector.size(); i++) {
    current_vector_element = int_vector[i];
}

// 遍历(迭代器方式)
vector<int>::iterator iterator;
for (iterator = int_vector.begin(); iterator != int_vector.end(); iterator++) {
    current_vector_element = *iterator;
}

// 在末尾增加元素
int_vector.push_back(4);

// 删除末尾的元素
int_vector.pop_back();

stack

// TODO

queue

// TODO

map

1.导入map

map是STL中的一个容器类,其位于std命名空间。

#include <map>
using namespace std;

2.定义map

map使用两个泛型来指定map元素中键与值的数据类型。

// 定义键为string类型且值为int类型的map
map<string,int> string_int_map; 

3.初始化map

map可以使用{ {键1,值1}, {键2,值2}, ... {键n,值n} }的形式初始化多个元素,如下所示:

map<string,int> string_int_map  = {{"a",1}, {"b",2}};

4.使用map

// 遍历(迭代器方式)
string current_key;
int current_value;
map<string,int>::iterator iterator;
for (iterator = string_int_map.begin(); iterator != string_int_map.end(); iterator++) {
    current_key = iterator->first;
    current_value = iterator->second;
}

set

// TODO