目录
STL 是 C++ 编程语言中的一个重要库,提供了一系列通用的模板类和函数,用于实现常见的数据结构和算法。酱将从常用操作和用法示例用个方面介绍几个常用的STL函数。
一、stack(栈)
stack是 C++ 标准模板库(STL)中的一个容器适配器,它基于其他容器(如 deque 或 list)实现,提供了 后进先出 的数据结构。stack 通常用于需要临时存储和按特定顺序访问数据的场景。
1.stack的常用操作
| 操作 | 函数 | 描述 |
|---|---|---|
| 插入元素 | push() | 在栈顶插入一个元素。 |
| 删除元素 | pop() | 删除栈顶元素(不返回该元素)。 |
| 访问栈顶元素 | top() | 返回栈顶元素的引用。 |
| 检查栈是否为空 | empty() | 如果栈为空,返回 true;否则返回 false。 |
| 获取栈的大小 | size() | 返回栈中元素的个数。 |
2.stack的用法示例
#include<bits/stdc++.h>
using namespace std;
int main()
{
// 创建一个 stack
stack<int> s;
// 向栈中插入元素
s.push(10);
s.push(20);
s.push(30);
// 访问栈顶元素
cout<<s.top()<<endl;
// 删除栈顶元素
s.pop();
// 再次访问栈顶元素
cout<<s.top()<<endl;
// 检查栈是否为空
if (!s.empty())
{
cout<< s.size()<<endl;
}
return 0;
}

二、queue
queue 是 C++ 标准模板库(STL)中的一个容器适配器,它基于其他容器(如 deque 或 list)实现,提供了 先进先出的数据结构。queue 通常用于需要按顺序处理数据的场景,例如任务调度等。
1.queue的常用操作
| 操作 | 函数 | 描述 |
|---|---|---|
| 插入元素 | push() | 在队尾插入一个元素。 |
| 删除元素 | pop() | 删除队头元素(不返回该元素)。 |
| 访问队头元素 | front() | 返回队头元素的引用。 |
| 访问队尾元素 | back() | 返回队尾元素的引用。 |
| 检查队列是否为空 | empty() | 如果队列为空,返回 true;否则返回 false。 |
| 获取队列的大小 | size() | 返回队列中元素的个数。 |
2. queue的用法示例
#include<bits/stdc++.h>
using namespace std;
int main()
{
// 创建一个 queue
queue<int> q;
// 向队列中插入元素
q.push(10);
q.push(20);
q.push(30);
// 访问队头元素
cout<<q.front()<<endl;
// 访问队尾元素
cout<<q.back()<<endl;
// 删除队头元素
q.pop();
// 再次访问队头元素
cout<<q.front()<<endl;
// 检查队列是否为空
if (!q.empty())
{
cout<<q.size()<<endl;
}
return 0;
}

三、map
map 是 C++ 标准模板库(STL)中的一个关联容器,它存储 键值对,并根据键(key)自动排序。map 基于红黑树(一种平衡二叉搜索树)实现,因此它的查找、插入和删除操作的时间复杂度均为 O(log n)。
1.map的常用操作
| 操作 | 函数 | 描述 |
|---|---|---|
| 插入元素 | insert() | 插入一个键值对。 |
| 访问元素 | operator[] | 通过键访问值(如果键不存在,会插入默认值)。 |
| 删除元素 | erase() | 删除指定键的元素。 |
| 查找元素 | find() | 查找指定键的元素,返回迭代器。 |
| 检查容器是否为空 | empty() | 如果容器为空,返回 true;否则返回 false。 |
| 获取容器的大小 | size() | 返回容器中元素的个数。 |
| 清空容器 | clear() | 删除所有元素。 |
2.map的用法示例
#include<bits/stdc++.h>
using namespace std;
int main()
{
// 创建一个 map
map<string,int>s;
// 插入键值对
s["name1"]=10;
s["name2"]=20;
s["name3"]=30;
// 访问元素
cout<<"name1's age: "<<s["name1"]<<endl;
// 遍历 map
for(const auto&pair:s)
{
cout<<pair.first<<" is "<< pair.second <<" years old."<<endl;
}
// 查找元素
auto it=s.find("name2");
if(it!=s.end())
{
cout<<"Found name2 Age: "<<it->second<<endl;
}
// 删除元素
s.erase("name3");
// 检查容器是否为空
if(!s.empty())
{
cout<<"Map is not empty. Size: "<<s.size()<<endl;
}
return 0;
}

四、set
set 是 C++ 标准模板库(STL)中的一个关联容器,用于存储 唯一元素,并自动根据元素的值进行排序。set 基于红黑树(一种平衡二叉搜索树)实现,因此它的查找、插入和删除操作的时间复杂度均为 O(log n)。适用于元素去重、维护顺序、元素是否出现过等情形。
1.构造
set<类型,比较器> arr
set<int> arr1;//从小到大储存int类型的集合
set<int,greater<int>> arr2;//从大到小储存int类型的集合
2.set的常用操作
| 操作 | 函数 | 描述 |
|---|---|---|
| 插入元素 | insert() | 插入一个元素。 |
| 删除元素 | erase() | 删除指定元素。 |
| 查找元素 判断元素是否存在 |
| 查找指定元素,返回迭代器。 存在返回1,不存在返回0. |
| 检查容器是否为空 | empty() | 如果容器为空,返回 true;否则返回 false。 |
| 获取容器的大小 | size() | 返回容器中元素的个数。 |
| 清空容器 | clear() | 删除所有元素。 |
3.set的用法示例
#include<bits/stdc++.h>
using namespace std;
int main()
{
// 创建一个 set
set<int>s;
// 插入元素
s.insert(10);
s.insert(20);
s.insert(30);
// 遍历 set
for (const auto&num:s)
{
cout<<num<< " ";
}
cout <<endl;
// 查找元素
auto it=s.find(20);
if (it!=s.end()) {
cout<<"Found: "<<*it <<endl;
}
// 删除元素
s.erase(30);
// 检查容器是否为空
if (!s.empty()) {
cout<<"Set is not empty. Size: "<<s.size()<<endl;
}
return 0;
}

五、string
string 是 C++ 标准库中的一个类,用于表示和操作字符串。它封装了字符数组,并提供了丰富的成员函数来方便地处理字符串。
1.string的常用操作
| 操作 | 函数 | 描述 |
|---|---|---|
| 构造函数 | string() | 创建一个空字符串。 |
| 赋值 | operator= | 将一个字符串赋值给另一个字符串。 |
| 拼接 | operator+ | 拼接两个字符串。 |
| 追加 | append() | 在字符串末尾追加内容。 |
| 查找 | find() | 查找子字符串或字符。 |
| 替换 | replace() | 替换字符串中的部分内容。 |
| 比较 | compare() | 比较两个字符串。 |
| 获取子字符串 | substr() | 获取字符串的子串。 |
| 获取字符 | operator[] | 访问指定位置的字符。 |
| 获取字符串长度 | length() 或 size() | 返回字符串的长度。 |
| 清空字符串 | clear() | 清空字符串内容。 |
2.string的用法示例
#include<bits/stdc++.h>
using namespace std;
int main() {
// 创建一个空字符串
string str;
// 赋值
str="Hello, World!";
// 获取字符串长度
cout<<"Length: "<<str.length()<<endl;
// 访问字符
cout<<"First character: "<< str[0] <<endl;
// 拼接字符串
str=str+" How are you?";
cout <<str<<endl;
// 查找子字符串
size_t pos = str.find("World");
if (pos!=string::npos) {
cout << "'World' found at position: "<<pos<<endl;
}
// 替换子字符串
str.replace(pos, 5, "Universe");
cout<<str<<endl;
// 获取子字符串
string subStr = str.substr(7, 5);
cout <<"Substring: "<<subStr<<endl;
// 清空字符串
str.clear();
cout<<"After clear: "<<str<<endl;
return 0;
}

六、vector
vector 是 C++ 标准模板库(STL)中的一个动态数组容器,它能够存储一组元素,并支持动态调整大小。vector 提供了高效的随机访问和动态增长的能力,是 C++ 中最常用的容器之一。
1.构造
vector<类型> arr(长度,[初值])
常见的一维数组和二位数组的构造:
vector<int> arr;//构造int类型的数组
vector<int> arr(100);//构造长度为100的int类型的数组
vector<int> arr(100,1);//构造长度为100,初始值为1的int类型的数组
vector<vector<int>> arr(100,vector<int>(100,1));//构造初始100行、100列初值为1的二维数组
2.vector的常用操作
| 操作 | 函数 | 描述 |
|---|---|---|
| 构造函数 | vector() | 创建一个空向量。 |
| 赋值 | operator= | 将一个向量赋值给另一个向量。 |
| 访问元素 | operator[] | 访问指定位置的元素。 |
| 访问元素 | at() | 访问指定位置的元素(带边界检查)。 |
| 获取第一个元素 | front() | 返回第一个元素的引用。 |
| 获取最后一个元素 | back() | 返回最后一个元素的引用。 |
| 插入元素 | push_back() | 在尾部插入一个元素。 |
| 删除元素 | pop_back() | 删除尾部元素。 |
| 插入元素 | insert() | 在指定位置插入元素。 |
| 删除元素 | erase() | 删除指定位置的元素。 |
| 获取向量大小 | size() | 返回向量中元素的个数。 |
| 检查向量是否为空 | empty() | 如果向量为空,返回 true;否则返回 false。 |
| 清空向量 | clear() | 删除所有元素。 |
| 调整向量大小 | resize() | 调整向量的大小。 |
| 预留空间 | reserve() | 预留一定的内存空间。 |
3.vector的用法示例
#include<bits/stdc++.h>
using namespace std;
int main() {
// 创建一个空向量
vector<int>s;
// 在尾部插入元素
s.push_back(10);
s.push_back(20);
s.push_back(30);
// 访问元素
cout<<s[0]<<endl;
cout<<s.at(1)<<endl;
// 遍历向量
for (const auto&num:s)
{
cout<<num<<" ";
}
cout<<endl;
// 删除尾部元素
s.pop_back();
// 获取向量大小
cout<<s.size()<<endl;
// 插入元素
s.insert(s.begin()+1,15);
// 删除元素
s.erase(s.begin()+2);
// 检查向量是否为空
if (!s.empty())
{
cout<<s.size()<<endl;
}
// 清空向量
s.clear();
cout <<"Size after clear: "<<s.size()<<endl;
return 0;
}

以上是一些常见的STL的函数介绍,希望对大家有所帮助哦。



3425

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



