📅  最后修改于: 2023-12-03 15:14:04.379000             🧑  作者: Mango
C++标准模板库(STL)是C++标准库的一个组成部分,它包含了一系列的容器,算法和迭代器等常用的数据结构和算法。STL是C++程序员必须掌握的一项重要技能,它可以大大提高程序员的开发效率和代码的质量。
STL包含了多种容器,包括序列容器和关联容器。序列容器包括vector、deque、list、forward_list和array等,而关联容器包括set、multiset、map和multimap等。下面分别介绍其中的一些常用容器:
vector是一种动态数组,它的容量可以随着元素的添加和删除而动态变化。vector支持快速随机访问,并且可以在末尾以常数时间添加或删除元素。以下是一个vector的简单示例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v; // 定义一个空的vector
v.push_back(1); // 在末尾添加一个元素
v.push_back(2); // 在末尾添加一个元素
v.push_back(3); // 在末尾添加一个元素
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " "; // 输出元素
}
cout << endl;
v.pop_back(); // 删除末尾的元素
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " "; // 输出元素
}
cout << endl;
return 0;
}
map是一种键值对的容器,它将一个键和一个值关联起来。map支持快速查找和插入,其内部实现是基于红黑树的。以下是一个map的简单示例:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<string, int> m; // 定义一个空的map
m["apple"] = 1; // 插入一个键值对
m["banana"] = 2; // 插入一个键值对
m["cherry"] = 3; // 插入一个键值对
cout << m["apple"] << endl; // 查找一个键值对
cout << m["banana"] << endl; // 查找一个键值对
cout << m["cherry"] << endl; // 查找一个键值对
return 0;
}
STL包含了多种算法,如排序、查找、迭代、拷贝等。其中一些常用的算法包括sort、find、reverse和copy等。
sort是一种快速排序算法,它可以对一个序列容器或者数组进行排序。以下是一个sort的简单示例:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {3, 2, 1}; // 定义一个vector并初始化
sort(v.begin(), v.end()); // 对vector进行排序
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " "; // 输出元素
}
cout << endl;
return 0;
}
find是一种线性查找算法,它可以在一个容器或者数组中查找一个元素。以下是一个find的简单示例:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3}; // 定义一个vector并初始化
vector<int>::iterator iter = find(v.begin(), v.end(), 2); // 查找元素2
if (iter != v.end())
{
cout << "Found " << *iter << endl; // 输出查找结果
}
else
{
cout << "Not found" << endl;
}
return 0;
}
迭代器是STL的一个重要特性,它可以让程序员通过统一的接口访问容器中的元素。STL包含了多种类型的迭代器,如输入迭代器、输出迭代器、正向迭代器和反向迭代器等。以下是一个迭代器的简单示例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3}; // 定义一个vector并初始化
for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++)
{
cout << *iter << " "; // 输出元素
}
cout << endl;
return 0;
}
本文简单介绍了STL的容器、算法和迭代器等常用特性,这些特性在C++编程中非常常用。熟练掌握STL可以提高程序员的开发效率和代码质量,建议C++程序员花费足够的时间和精力学习。