📅  最后修改于: 2023-12-03 15:14:16.366000             🧑  作者: Mango
C++标准模板库(STL)是C++语言的一部分,它提供了一个丰富而强大的数据结构和算法集合,包括容器类、迭代器、算法和函数对象。STL将常见数据结构和算法封装成可重用的代码,使C++程序更易于编写、测试和维护。本文介绍一些常见的STL类和函数。
STL容器是STL中最重要的一部分,它提供了一种方便快捷的方式来存储和访问数据。STL容器根据不同的需求提供了不同类型的容器,包括:
下面是一些STL容器的示例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// 创建一个vector对象
vector<int> v;
// 添加元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
// 遍历元素
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
输出: 1 2 3
#include <iostream>
#include <set>
using namespace std;
int main()
{
// 创建一个set对象
set<int> s;
// 添加元素
s.insert(1);
s.insert(2);
s.insert(3);
// 遍历元素
for (set<int>::iterator it = s.begin(); it != s.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
// 查找元素
set<int>::iterator it = s.find(2);
if (it != s.end())
{
cout << "2 is found" << endl;
}
else
{
cout << "2 is not found" << endl;
}
// 删除元素
s.erase(2);
return 0;
}
输出: 1 2 3
2 is found
STL迭代器用于遍历容器中的元素,它提供了一种访问容器元素的通用方式,支持前向、双向和随机访问。STL迭代器通过以下方式定义:
容器类名::iterator it;
示例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// 创建一个vector对象
vector<int> v;
// 添加元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
// 使用迭代器遍历元素
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
输出: 1 2 3
STL算法是STL的核心部分,它提供了很多常用的算法,包括排序、查找、分区、合并等等。STL的所有算法都是基于迭代器实现的,因此可以使用STL算法操作容器中的元素,例如:
示例:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
// 创建一个vector对象
vector<int> v;
// 添加元素
v.push_back(3);
v.push_back(1);
v.push_back(2);
// 排序
sort(v.begin(), v.end());
// 查找元素
vector<int>::iterator it = find(v.begin(), v.end(), 2);
if (it != v.end())
{
cout << "2 is found" << endl;
}
else
{
cout << "2 is not found" << endl;
}
// 反转容器中的元素
reverse(v.begin(), v.end());
// 遍历元素
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
输出: 3 2 1
2 is found
STL函数对象是一种可以被调用的对象,它类似于函数指针,但可以保存状态。STL函数对象可以作为STL算法的参数,这使算法更加灵活。STL提供了一些常用的函数对象,例如:
示例:
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
using namespace std;
int main()
{
// 创建一个vector对象
vector<int> v;
// 添加元素
v.push_back(3);
v.push_back(1);
v.push_back(2);
// 使用函数对象对元素进行操作
transform(v.begin(), v.end(), v.begin(), bind2nd(plus<int>(), 2));
// 遍历元素
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
输出: 5 3 4
以上就是C++标准模板库(STL)的一些基本介绍和示例。STL提供了很多非常有用的数据结构和算法,能够大量减少程序员的工作量和提高程序的效率。因此,学习STL是C++程序员必不可少的一部分。