在C++里有写好的标准模板库,我们称为STL库,它实现了集合、映射表、栈、队列等数据结构和排序、查找等算法。我们可以很方便地调用标准库来进行各类操作。
动态数组
引用库
有时候想开一个数组,但是却不知道应该开多大长度的数组合适,因为我们需要用到的数组可能会根据情况变动,是个时候就需要我们用到动态数组了。
C++中的动态数组写作 vector,它的实现被写在 vector 的头文件中,并在所有头文件之后加上一句 using namespac std。
#include <vector>
using namespace std;
int main() {
return 0;
}
构建一个动态数组
现在我们来构造一个动态数组。
C++中直接构造一个vector的语句为:
vector<T>vec;
这样我们定义了一个名为 vec 的储存 T 类型数据的动态数组。其中 T 是我们要储存的数据类型,可以是 int、float、double 或者其他自定义的数据类型等等。初始的时候 vec 是空的。
插入元素
C++中通过 push_back ( ) 方法在数组最后面插入一个新的元素。
#include <vector>
using namespace std;
int main() {
vector<int> vec; // []
vec.push_back(1); // [1]
vec.push_back(2); // [1, 2]
vec.push_back(3); // [1, 2, 3]
return 0;
}
获取长度并且访问元素
C++ 中通过 size ( ) 方法获取 vector 的长度,通过 [ ] 操作直接访问 vector 中的元素,这一点和数组是一样的。
#include <vector>
#include <stdio.h>
using namespace std;
int main() {
vector<int> vec; // []
vec.push_back(1); // [1]
vec.push_back(2); // [1, 2]
vec.push_back(3); // [1, 2, 3]
for (int i = 0; i < vec.size(); ++i) {
printf("%d\n", vec[i]);
}
return 0;
}
修改元素
C++ 中修改 vector 中某个元素很简单,只需要用 = 给它赋值就好了,比如 vec[1]=3。
#include <vector>
#include <stdio.h>
using namespace std;
int main() {
vector<int> vec; // []
vec.push_back(1); // [1]
vec.push_back(2); // [1, 2]
vec.push_back(3); // [1, 2, 3]
vec[1] = 3; // [1, 3, 3]
vec[2] = 2; // [1, 3, 2]
for (int i = 0; i < vec.size(); ++i) {
printf("%d\n", vec[i]);
}
return 0;
}
清空
C++需调用 clear( ) 方法就可以清空 vector 。
C++中 vector 的 clear( ) 只是清空 vector ,并不会清空开的内存。用一种方法可以清空 vector 的内存。先定义一个空的 vector x,然后用需要清空的 vector 和 x 交换,因为 x 是局部变量,所以会被系统回收内存(注意:大括号一定不能去掉)。
vector<int> v;
{
vector<int> x;
v.swap(x);
}
C++ vector 方法总结
| 方法 | 功能 |
|---|---|
| push_back | 在末尾加入一个元素 |
| pop_back | 在末尾弹出一个元素 |
| size | 获取长度 |
| clear | 清空 |
集合
集合是数学中的一个基本概念,通俗地讲,集合是由一些不重复的数据组成的。比如 { 1 , 2 , 3 } 就是一个有1,2,3的集合。C++的标准库中的集合支持高效的插入、删除合查询操作,这三个操作的时间复杂度都是 O(lgn),其中n是当前集合中元素的个数。如果用数组,虽然插入的时间复杂度是 O(1),但是删除合查询都是 O(n),此时效率太低。在C++中我们常用的集合是set。
引用库
C++中的集合实现被写在 set 的头文件中,并在所有头文件之后加上一句 using namespac std。
#include <set>
using namespace std;
构造一个集合
现在我们来构造一个集合。
C++中直接构造一个 set 的语句为:
set<T> s;
这样我们定义了一个名为s的、储存T类型数据的集合,其中T是集合要储存的数据类型。初始的时候s是空集合。
插入元素
C++中用 insert( ) 方法向集合中插入一个新的元素。注意如果集合中已经存在了某个元素,再次插入不会产生任何效果,集合中是不会出现重复元素的。
#include <set>
#include <string>
using namespace std;
int main() {
set<string> country; // {}
country.insert("China"); // {"China"}
coun

这篇博客详细介绍了C++中的标准模板库(STL),涵盖了动态数组(vector)的基本操作,如插入、访问、修改和清空;集合(set)的创建、插入、删除和遍历;映射(map)的构造、插入、访问和清空;以及栈、队列和优先队列的概念和使用方法。此外,还讨论了C++中并查集的操作,包括路径压缩和带权并查集的应用。

3654

被折叠的 条评论
为什么被折叠?



