STL的常用函数

目录

一、stack(栈)

1.stack的常用操作

2.stack的用法示例 

二、queue

1.queue的常用操作

2. queue的用法示例

三、map

1.map的常用操作

 2.map的用法示例

四、set 

1.构造

2.set的常用操作

3.set的用法示例

 五、string

1.string的常用操作

2.string的用法示例

六、vector

1.构造

2.vector的常用操作

3.vector的用法示例 


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()删除指定元素。

查找元素


判断元素是否存在

find()


count()

查找指定元素,返回迭代器。


存在返回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的函数介绍,希望对大家有所帮助哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值