STL(第一课1.2):一些常用的STL代码及其用途和使用方法

本文介绍了C++ STL的基本概念,包括容器如vector、list、deque、set、map的用途和使用方法,以及排序、查找和遍历等算法的应用。通过对这些内容的学习,可以帮助开发者更好地利用STL进行高效编程。
摘要由CSDN通过智能技术生成

目录

1.STL

2.容器

2.1:vector

2.1.1:用途

2.1.2:使用方法

2.2:list

2.2.1:用途

2.2.2:使用方法

2.3:deque

2.3.1:用途

2.3.2:使用方法

2.4:set

2.4.1:用途

2.4.2:使用方法

2.5:map

2.5.1:用途

2.5.2:使用方法

3.算法

3.1:排序

3.1.1:使用方法

3.2:查找

3.2.1:使用方法

3.3:遍历

3.3.1:使用方法


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还有很多其他的功能和算法,可以根据需要进行学习和使用。

C++竞赛中,常用STL(Standard Template Library)组件有vector、stack以及算法函数next_permutation。vector是一个动态数组容器,可以方便地进行元素的插入、删除和访问。stack是一个后进先出(LIFO)的容器,常用于实现递归、深度优先搜索等算法。next_permutation是一个算法函数,用于按照字典序生成某个序列的所有排列。 在竞赛中,我们可以利用vector来存储元素,使用push_back函数添加元素,使用[]操作符或迭代器进行元素的访问。可以使用stack来模拟递归过程,实现一些深度优先搜索的问题。而使用next_permutation函数可以方便地生成某个序列的所有排列。 举个例子,如果我们想要按照字典序输出1到n的全排列,可以使用next_permutation函数结合vector来实现。首先,我们可以使用一个for循环将1到n的元素添加到vector中。然后,使用do-while循环来不断调用next_permutation函数,每次生成下一个排列并输出。最后,当next_permutation函数返回false时,表示已经生成了所有的排列,循环结束。 另外,如果我们需要使用栈来解决一些问题,可以使用stack容器。可以使用push函数将元素入栈,使用pop函数将元素出栈。栈的特点是后进先出,所以可以用来模拟递归过程或实现一些需要回溯的算法。 总结起来,在C++竞赛中,常用STL组件有vector、stack和算法函数next_permutation。vector可以方便地进行元素的插入、删除和访问,stack可以模拟递归过程,而next_permutation函数可以生成某个序列的所有排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy银河

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值