开心档之C++ STL 教程
C++ STL 教程
目录
C++ STL 教程
实例

在前面的章节中,我们已经学习了 C++ 模板的概念。C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。
C++ 标准模板库的核心包括以下三个组件:
| 组件 | 描述 |
|---|---|
| 容器(Containers) | 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。 |
| 算法(Algorithms) | 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。 |
| 迭代器(iterators) | 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。 |
这三个组件都带有丰富的预定义函数,帮助我们通过简单的方式处理复杂的任务。
下面的程序演示了向量容器(一个 C++ 标准的模板),它与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求:
实例
#include <iostream>
#include <vector>
using namespace std;int main()
{// 创建一个向量存储 intvector<int> vec; int i;// 显示 vec 的原始大小cout << "vector size = " << vec.size() << endl;// 推入 5 个值到向量中for(i = 0; i < 5; i++){vec.push_back(i);}// 显示 vec 扩展后的大小cout << "extended vector size = " << vec.size() << endl;// 访问向量中的 5 个值for(i = 0; i < 5; i++){cout << "value of vec [" << i << "] = " << vec[i] << endl;}// 使用迭代器 iterator 访问值vector<int>::iterator v = vec.begin();while( v != vec.end()) {cout << "value of v = " << *v << endl;v++;}return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
vector size = 0
extended vector size = 5
value of vec [0] = 0
value of vec [1] = 1
value of vec [2] = 2
value of vec [3] = 3
value of vec [4] = 4
value of v = 0
value of v = 1
value of v = 2
value of v = 3
value of v = 4
关于上面实例中所使用的各种函数,有几点要注意:
- push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
- size( ) 函数显示向量的大小。
- begin( ) 函数返回一个指向向量开头的迭代器。
- end( ) 函数返回一个指向向量末尾的迭代器。
相关文章:
开心档之C++ STL 教程
C STL 教程 目录 C STL 教程 实例 在前面的章节中,我们已经学习了 C 模板的概念。C STL(标准模板库)是一套功能强大的 C 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构…...
Thread 类的基本用法
文章目录一、线程创建1.1 Thread的常见构造方法2.1 创建线程二、线程中断2.1 Thread的几个常见属性2.2 中断线程三、线程等待四、线程休眠五、获取线程实例一、线程创建 1.1 Thread的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线…...
2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)
文章目录1.病毒溯源问题:求树的最长链长度和字典序最小的最长链思路:2.龙龙送外卖思路:3.红色警报:思路:1.病毒溯源 问题:求树的最长链长度和字典序最小的最长链 思路: 一开始用 bfs 做的 &a…...
917. 仅仅反转字母
917. 仅仅反转字母https://leetcode.cn/problems/reverse-only-letters/ 难度简单189 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。 返回反转后的 s 。 示例…...
Linux-Git
一、总论 1.1 写在前面的话 这已经是我第三遍学Git相关操作了,可以说这个玩意是真的狗,因为确实用不到,不知道下个学期会不会用到,直到现在我刚刚学完,处于知识水平的巅峰,知道Git的具体功能ÿ…...
leetcode:2273. 移除字母异位词后的结果数组(python3解法)
难度:简单 给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。 在一步操作中,需要选出任一下标 i ,从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件: 0 < i < words.l…...
基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用
植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于…...
4.4---Spring框架之Spring事务(复习版本)
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。 Spring只提供统一事务管理接口,具体实现都是由各数据库自己实现,数据库事务的提交和回滚是通过 redo log 和 undo log实现的。 S…...
IP-Guard是否支持禁止客户端电脑卸载指定软件?
哪些浏览器支持设置窗口水印? 支持的浏览器有:搜狗浏览器、360安全浏览器、360极速浏览器、qq浏览器、谷歌浏览器、ie浏览器、edge浏览器 注意: 1.目标URL窗口水印不支持Firefox浏览器和猎豹浏览器 2.搜狗浏览器在兼容模式下,目标URL窗口水印不生效 3.部分浏览器(360安全…...
系统图标形状overlayapk
时间:2020/10/10 之前公司不允许csdn,笔记写在其它地方。最近整理过来 1、图标形状的overlay frameworks\base\packages\overlays目录 2、某一种形状的源码 默认配置在framework/base/core/res/res res下面放着图标形状的mask路径,这个值是一个矢量图…...
辅助编程coding的两种工具:Github Copilot、Cursor
目录Cursor简介下载地址:使用技巧:CHAT:example 1:注意:example 2:Github Copilot官网简介以插件方式安装pycharm自动写代码example 1:写一个mysql取数据的类example 2:写一个多重共线性检测的类…...
MySQL5.7安装教程
1.鼠标右击【MySQL5.7】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 MySQL5.7】 2.打开解压后的文件夹,双击运行【mysql-installer-community-5.7.27.0】 3.勾选【I accept the license terms】,点击【Next】 4…...
ML@sklearn@ML流程Part3@AutomaticParameterSearches
文章目录Automatic parameter searchesdemomodel_selection::Hyper-parameter optimizersGridSearchCVegRandomizedSearchCVegNoteRandomForestRegressorMSEpipeline交叉验证🎈egL1L2正则Next stepsUser Guide vs TutorialAutomatic parameter searches Automatic p…...
Ubuntu22安装OpenJDK
目录 一、是否自带JDK 二、 删除旧JDK(如果自带JDK满足需求就直接使用了) 三、下载OpenJDK 四、新建/home/user/java/文件夹 五、 设置环境变量 六、查看完成 附:完整版连接: 一、是否自带JDK java -version 二、 删除旧…...
【数据库管理】②实例管理及数据库启动关闭
1. 实例和参数文件 1.1 instance 用于管理和访问 database. instance 在启动阶段读取初始化参数文件(init parameter files). 1.2 init parameter files [rootoracle-db-19c ~]# su - oracle [oracleoracle-db-19c ~]$ [oracleoracle-db-19c ~]$ cd $ORACLE_HOME/dbs [oracl…...
【2023】Kubernetes之Pod与容器状态关系
目录简单创建一个podPod运行阶段:容器运行阶段简单创建一个pod apiVersion: v1 kind: pod metadata: name: nginx-pod spec:containers:- name: nginximages: nginx:1.20以上代码表示创建一个名为nginx-pod的pod资源对象。 Pod运行阶段: Pod创建后&am…...
LabVIEW阿尔泰PCIE 5654 例程与相关资料
LabVIEW阿尔泰PCIE 5654 例程与相关资料 阿尔泰PCIE 5654多功能采集卡,具有500/250Ksps、32/16路模拟量输入;100Ksps,16位,4/2/0路同步电压模拟量输出;8路DIO ;8路PFI;1路32位多功能计数器。PC…...
spark2.4.4有哪些主要的bug
Issue Navigator - ASF JIRA -...
信息学奥赛一本通 1347:【例4-8】格子游戏
【题目链接】 ybt 1347:【例4-8】格子游戏 【题目考点】 1. 并查集:判断无向图是否有环 【解题思路】 该题为判断无向图是否有环。可以使用并查集来完成。 学习并查集时,每个元素都由一个整数来表示。而该问题中每个元素是一个坐标点&a…...
acwing3417. 砝码称重
acwing3417. 砝码称重算法 1: DFS算法2 : DP算法 1: DFS /*** 数据范围 对于 50%的评测用例,1≤N≤15. 对于所有评测用例,1≤N≤100,N 个砝码总重不超过 1e5. */ /* 算法 1: DFS 思路 : 对于每个砝码,有放在左边,放在右边,和不放三种选择,使…...
破解代码智能壁垒:DeepSeek-Coder-V2实战指南与开源优势深度解析
破解代码智能壁垒:DeepSeek-Coder-V2实战指南与开源优势深度解析 【免费下载链接】DeepSeek-Coder-V2 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Coder-V2 面对日益复杂的软件开发需求,开发者们常常在代码生成质量、多语言支持…...
DeOldify图像上色服务完整流程:基于Flask的Web服务部署与使用
DeOldify图像上色服务完整流程:基于Flask的Web服务部署与使用 1. 项目概述与核心功能 DeOldify图像上色服务是一个基于深度学习技术的Web应用,能够将黑白或褪色的老照片自动转换为彩色图像。这个项目通过简单的Web界面,让用户无需任何技术背…...
终极指南:如何轻松解包Godot PCK文件并提取游戏资源
终极指南:如何轻松解包Godot PCK文件并提取游戏资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 还在为Godot游戏的PCK文件无法解包而烦恼吗?无论你是游戏开发者想要复用资…...
找不到api-ms-win-core-path-l1-1-0.dll的官方解决方法(2026更新)
我是一名企业的IT桌面支持,平时处理得最多的就是员工电脑上五花八门的软件报错。最近,api-ms-win-core-path-l1-1-0.dll缺失的工单量激增,尤其在Windows 7系统的电脑上。很多同事第一反应是去网上搜这个文件下载,但这恰恰是IT运维…...
革新UE4资源管理:UnrealPakViewer全攻略
革新UE4资源管理:UnrealPakViewer全攻略 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 作为UE4开发者,你是否曾为Pak文件的…...
从规格书到点亮屏幕:RK3568+GM8775C双通道LVDS调试全流程解析
RK3568GM8775C双通道LVDS屏幕调试实战:从参数解析到设备树配置 第一次拿到一块非标准LVDS屏幕时,我盯着规格书里密密麻麻的表格和数据完全无从下手。作为硬件工程师,我们常常需要面对各种定制化显示屏的驱动问题。本文将带你深入理解如何从屏…...
避开这些坑!算法工程师自学必备的5个高效学习法与工具推荐
避开这些坑!算法工程师自学必备的5个高效学习法与工具推荐 1. 为什么大多数自学算法工程师会失败? 在咖啡馆见到老张时,他正对着电脑屏幕上的LeetCode题目发呆。这位转行学习算法的前机械工程师已经坚持了8个月,但最近一次面试还是…...
【进阶指南】VSCode + Clang-Format:从零定制你的专属代码风格(130+配置项实战解析)
1. 为什么需要定制代码风格? 当你第一次接触代码格式化工具时,可能会觉得默认配置已经足够好用。但当你参与过几个团队项目后,就会发现统一的代码风格有多重要。我曾经接手过一个遗留项目,里面混杂着五种不同的缩进风格——有用制…...
工业质检新革命:无需标注数据,用ChatGPT式对话完成目标定位
工业质检新革命:无需标注数据,用ChatGPT式对话完成目标定位 1. 传统工业质检的痛点与挑战 在制造业的质检环节中,目标定位一直是个技术难题。传统方法通常需要: 大量标注数据训练专用模型针对每种产品定制算法频繁调整参数适应…...
Proxifier规则配置避坑指南:如何精准放行微信/QQ流量,让你的渗透测试更丝滑
Proxifier规则配置实战:精准分流社交软件流量的高阶技巧 渗透测试工程师们对Proxifier这款工具应该都不陌生——它就像网络流量的交通指挥官,能精准地将不同应用程序的请求导向代理或直连通道。但实际使用中,不少人都遇到过这样的尴尬&#x…...
