目录
1.STL
STL(Standard Template Library,标准模板库)是C++标准库的一部分,提供了通用的模板类和函数,包括容器、算法和迭代器等。
以下是一些常用的STL代码及其用途和使用方法:
2.容器
STL提供了多种容器,包括vector、list、deque、set、map等。它们提供了不同的数据结构,以适应不同的应用场景。其中,vector、list、deque是序列容器,set、map是关联容器。
2.1:vector
2.1.1:用途
动态数组,可随时在末尾添加元素
2.1.2:使用方法
#include <vector>
using namespace std;
// 创建空vector
vector<int> v;
// 在末尾添加元素
v.push_back(1);
v.push_back(2);
// 访问元素
v[0]; // = 1
v[1]; // = 2
// 迭代器遍历
for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
cout << *it << endl;
}
2.2:list
2.2.1:用途
双向链表,可在任意位置添加或删除元素。
2.2.2:使用方法
#include <list>
using namespace std;
// 创建空list
list<int> l;
// 在末尾添加元素
l.push_back(1);
l.push_back(2);
// 在任意位置插入元素
l.insert(l.begin(), 0); // 在开头插入元素0
l.insert(++l.begin(), 3); // 在第2个位置插入元素3
// 删除元素
l.erase(l.begin()); // 删除开头元素
// 访问元素
l.front(); // = 0
l.back(); // = 2
// 迭代器遍历
for(list<int>::iterator it = l.begin(); it != l.end(); it++){
cout << *it << endl;
}
2.3:deque
2.3.1:用途
双端队列,可在队首或队尾添加或删除元素。
2.3.2:使用方法
#include <deque>
using namespace std;
// 创建空deque
deque<int> d;
// 在队尾添加元素
d.push_back(1);
d.push_back(2);
// 在队首添加元素
d.push_front(0);
// 删除元素
d.pop_back();
d.pop_front();
// 访问元素
d.front(); // = 0
d.back(); // = 1
// 迭代器遍历
for(deque<int>::iterator it = d.begin(); it != d.end(); it++){
cout << *it << endl;
}
2.4:set
2.4.1:用途
集合,可以快速查找元素。
2.4.2:使用方法
#include <set>
using namespace std;
// 创建空set
set<int> s;
// 添加元素
s.insert(1);
s.insert(2);
// 查找元素
set<int>::iterator it = s.find(2);
if(it != s.end()){
cout << "2 exists in the set." << endl;
}
// 删除元素
s.erase(1);
// 迭代器遍历
for(set<int>::iterator it = s.begin(); it != s.end(); it++){
cout << *it << endl;
}
2.5:map
2.5.1:用途
映射,可以快速查找键对应的值。
2.5.2:使用方法
#include <map>
using namespace std;
// 创建空map
map<string, int> m;
// 添加键值对
m["Alice"] = 1;
m["Bob"] = 2;
// 查找元素
map<string, int>::iterator it = m.find("Bob");
if(it != m.end()){
cout << "Bob's value is " << it->second << endl;
}
// 删除元素
m.erase("Alice");
// 迭代器遍历
for(map<string, int>::iterator it = m.begin(); it != m.end(); it++){
cout << it->first << " : " << it->second << endl;
}
3.算法
STL提供了多种常用算法,包括排序、查找、遍历等。
3.1:排序
STL提供了sort函数,可以对容器中的元素进行排序。
3.1.1:使用方法
#include <algorithm> // 必须包含这个头文件
using namespace std;
vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
// 对vector进行排序
sort(v.begin(), v.end());
// 输出排好序的vector
for(int i = 0; i < v.size(); i++){
cout << v[i] << " ";
}
3.2:查找
STL提供了find函数,可以在容器中查找指定元素。
3.2.1:使用方法
#include <algorithm> // 必须包含这个头文件
using namespace std;
vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
// 在vector中查找元素4
vector<int>::iterator it = find(v.begin(), v.end(), 4);
if(it != v.end()){
cout << "4 exists in the vector." << endl;
}
3.3:遍历
STL提供了foreach函数,可以用于容器的遍历。
3.3.1:使用方法
#include <algorithm> // 必须包含这个头文件
using namespace std;
vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
// 输出vector中的所有元素
for_each(v.begin(), v.end(), [](int n){ cout << n << " "; });
以上是一些常用的STL代码及其用途和使用方法,STL还有很多其他的功能和算法,可以根据需要进行学习和使用。