前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ STL简介

C++ STL简介

作者头像
EmoryHuang
发布2022-10-28 15:17:50
4650
发布2022-10-28 15:17:50
举报
文章被收录于专栏:EmoryHuang's Blog

C++ STL 简介

前言

STL,英文全称 standard template library,中文可译为 标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入 / 输出、数学计算等功能。

vector

vector 容器是 STL 中最常用的容器之一,vector 实现的是一个动态数组,即可以进行元素的插入和删除。

vector 常被称为 向量容器,在尾部插入或删除元素,时间复杂度为 O(1);而在容器头部或者中部插入或删除元素,时间复杂度为 O(n)

代码语言:javascript
复制
vector<int> nums;           # 空 vector
nums.resize(20);            # 指定大小
vector<int> nums(20);       # 创建时指定大小,默认初始值都为 0
vector<int> nums(20,1);     # 创建时指定大小,初始值为 1
vector<int> nums {1, 2, 3, 4, 5};
代码语言:javascript
复制
size()                      # 返回元素个数
empty()                     # 返回是否为空
clear()                     # 清空
front()/back()              # 第一个/最后一个元素
push_back()/pop_back()      # 插入/移除最后一个元素
begin()/end()               # 返回第一个元素/最末元素下一个位置的迭代器
insert()                    # 插入元素到 vector 中
resize()                    # 改变 vector 元素数量的大小
[]                          # 下标访问
支持比较运算,按字典序

pair

pair 专门用来将 2 个普通元素 first 和 second 创建成一个新元素 <first, second>

代码语言:javascript
复制
pair<int, int>
first, 第一个元素
second, 第二个元素
支持比较运算,以 first 为第一关键字,以 second 为第二关键字(字典序)

string

string 是 C++ 标准库的一个重要的部分,主要用于字符串处理。

代码语言:javascript
复制
string s1;                  # 默认初始化,空串
string s2(s1);              # 使用s1初始化s2
string s3("Hello");         # 字符串初始化
string s4(n,'c');           # 使用 n 个字符 'c' 初始化
代码语言:javascript
复制
size()/length()             # 返回字符串长度
empty()                     # 判空
clear()                     # 清空
substr(pos,len)             # 返回pos开始长度为len的子串
find(s)/rfind(s)            # 查找 s 第一次/最后一次出现位置
+=                          # 重载 += 运算符
[]                          # 下标访问
字典序比较

queue

queue 只能在容器的末尾添加新元素,只能从头部移除元素,FIFO 准则

代码语言:javascript
复制
size()                      # 返回队列中元素的个数
empty()                     # 判空
push()                      # 向队尾插入一个元素
front()                     # 返回队头元素
back()                      # 返回队尾元素
pop()                       # 弹出队头元素

priority_queue

priority_queue, 优先队列,元素按照一定的规则排列有序,在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。默认是大根堆

代码语言:javascript
复制
size()                      # 返回队列中元素的个数
empty()                     # 判空
push()                      # 插入一个元素
top()                       # 返回堆顶元素
pop()                       # 弹出堆顶元素
定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q;

deque

deque, 双端队列,允许在容器头部/尾部快速插入和删除

代码语言:javascript
复制
size()                      # 返回队列中元素的个数
empty()                     # 判空
clear()                     # 清空
front()/back()              # 返回第一个/最后一个元素
push_back()/pop_back()      # 在尾部加入/删除一个元素
push_front()/pop_front()    # 在头部加入/删除一个元素
[]                          # 下标访问

stack

stack 实现了一个先进后出(FILO)的数据结构

代码语言:javascript
复制
size()                      # 返回栈中元素的个数
empty()                     # 判空
push()                      # 向栈顶插入一个元素
top()                       # 返回栈顶元素
pop()                       # 弹出栈顶元素

set

集合中以一种特定的顺序保存唯一的元素,自动递增去重。

unordered_set,multiset 类似

代码语言:javascript
复制
size()                      # 返回集合中元素的个数
empty()                     # 判空
begin()/end()               # 返回第一个元素/最末元素下一个位置的迭代器
find(val)                   # 查找值为 val 的元素
count(val)                  # 查找值为 val 的元素的个数
insert()                    # 插入元素到集合
erase()                     # 删除集合中的元素
lower_bound(val)            # 返回指向第一个大于或等于val的元素的迭代器
upper_bound(val)            # 返回指向第一个大于val的元素的迭代器

map

map 容器存储的都是 pair 对象,包含 “关键字 / 值” 对

unordered_map,multimap 类似

代码语言:javascript
复制
size()                      # 返回map中元素的个数
empty()                     # 判空
begin()/end()               # 返回第一个元素/最末元素下一个位置的迭代器
find(key)                   # 查找键为 key 的键值对
count(key)                  # 查找键为 key 的键值对的个数
insert()                    # 插入键值对
erase()                     # 删除键值对
lower_bound(key)            # 返回指向第一个大于或等于key的元素的迭代器
upper_bound(key)            # 返回指向第一个大于key的元素的迭代器
[]                          # 重载 [] 运算符

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ STL 简介
    • 前言
      • vector
        • pair
          • string
            • queue
              • priority_queue
                • deque
                  • stack
                    • set
                      • map
                        • 参考
                        相关产品与服务
                        容器服务
                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档