当前位置: 首页 > news >正文

开心档之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 教程 实例 在前面的章节中&#xff0c;我们已经学习了 C 模板的概念。C STL&#xff08;标准模板库&#xff09;是一套功能强大的 C 模板类&#xff0c;提供了通用的模板类和函数&#xff0c;这些模板类和函数可以实现多种流行和常用的算法和数据结构…...

Thread 类的基本用法

文章目录一、线程创建1.1 Thread的常见构造方法2.1 创建线程二、线程中断2.1 Thread的几个常见属性2.2 中断线程三、线程等待四、线程休眠五、获取线程实例一、线程创建 1.1 Thread的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线…...

2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)

文章目录1.病毒溯源问题&#xff1a;求树的最长链长度和字典序最小的最长链思路&#xff1a;2.龙龙送外卖思路&#xff1a;3.红色警报&#xff1a;思路&#xff1a;1.病毒溯源 问题&#xff1a;求树的最长链长度和字典序最小的最长链 思路&#xff1a; 一开始用 bfs 做的 &a…...

917. 仅仅反转字母

917. 仅仅反转字母https://leetcode.cn/problems/reverse-only-letters/ 难度简单189 给你一个字符串 s &#xff0c;根据下述规则反转字符串&#xff1a; 所有非英文字母保留在原有位置。所有英文字母&#xff08;小写或大写&#xff09;位置反转。 返回反转后的 s 。 示例…...

Linux-Git

一、总论 1.1 写在前面的话 ​ 这已经是我第三遍学Git相关操作了&#xff0c;可以说这个玩意是真的狗&#xff0c;因为确实用不到&#xff0c;不知道下个学期会不会用到&#xff0c;直到现在我刚刚学完&#xff0c;处于知识水平的巅峰&#xff0c;知道Git的具体功能&#xff…...

leetcode:2273. 移除字母异位词后的结果数组(python3解法)

难度&#xff1a;简单 给你一个下标从 0 开始的字符串 words &#xff0c;其中 words[i] 由小写英文字符组成。 在一步操作中&#xff0c;需要选出任一下标 i &#xff0c;从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件&#xff1a; 0 < i < words.l…...

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指示自然环境中的大气、水、土壤等成分的变化&#xff0c;其年际和季节性变化可以作为地球气候变化的重要指标。此外&#xff0c;由于…...

4.4---Spring框架之Spring事务(复习版本)

Spring事务的本质其实就是数据库对事务的支持&#xff0c;没有数据库的事务支持&#xff0c;spring是无法提供事务功能的。 Spring只提供统一事务管理接口&#xff0c;具体实现都是由各数据库自己实现&#xff0c;数据库事务的提交和回滚是通过 redo log 和 undo log实现的。 S…...

IP-Guard是否支持禁止客户端电脑卸载指定软件?

哪些浏览器支持设置窗口水印? 支持的浏览器有:搜狗浏览器、360安全浏览器、360极速浏览器、qq浏览器、谷歌浏览器、ie浏览器、edge浏览器 注意: 1.目标URL窗口水印不支持Firefox浏览器和猎豹浏览器 2.搜狗浏览器在兼容模式下,目标URL窗口水印不生效 3.部分浏览器(360安全…...

系统图标形状overlayapk

时间&#xff1a;2020/10/10 之前公司不允许csdn&#xff0c;笔记写在其它地方。最近整理过来 1、图标形状的overlay frameworks\base\packages\overlays目录 2、某一种形状的源码 默认配置在framework/base/core/res/res res下面放着图标形状的mask路径,这个值是一个矢量图…...

辅助编程coding的两种工具:Github Copilot、Cursor

目录Cursor简介下载地址&#xff1a;使用技巧&#xff1a;CHAT:example 1&#xff1a;注意&#xff1a;example 2&#xff1a;Github Copilot官网简介以插件方式安装pycharm自动写代码example 1&#xff1a;写一个mysql取数据的类example 2&#xff1a;写一个多重共线性检测的类…...

MySQL5.7安装教程

1.鼠标右击【MySQL5.7】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 MySQL5.7】 2.打开解压后的文件夹&#xff0c;双击运行【mysql-installer-community-5.7.27.0】 3.勾选【I accept the license terms】&#xff0c;点击【Next】 4…...

ML@sklearn@ML流程Part3@AutomaticParameterSearches

文章目录Automatic parameter searchesdemomodel_selection::Hyper-parameter optimizersGridSearchCVegRandomizedSearchCVegNoteRandomForestRegressorMSEpipeline交叉验证&#x1f388;egL1L2正则Next stepsUser Guide vs TutorialAutomatic parameter searches Automatic p…...

Ubuntu22安装OpenJDK

目录 一、是否自带JDK 二、 删除旧JDK&#xff08;如果自带JDK满足需求就直接使用了&#xff09; 三、下载OpenJDK 四、新建/home/user/java/文件夹 五、 设置环境变量 六、查看完成 附&#xff1a;完整版连接&#xff1a; 一、是否自带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运行阶段&#xff1a;容器运行阶段简单创建一个pod apiVersion: v1 kind: pod metadata: name: nginx-pod spec:containers:- name: nginximages: nginx:1.20以上代码表示创建一个名为nginx-pod的pod资源对象。 Pod运行阶段&#xff1a; Pod创建后&am…...

LabVIEW阿尔泰PCIE 5654 例程与相关资料

LabVIEW阿尔泰PCIE 5654 例程与相关资料 阿尔泰PCIE 5654多功能采集卡&#xff0c;具有500/250Ksps、32/16路模拟量输入&#xff1b;100Ksps&#xff0c;16位&#xff0c;4/2/0路同步电压模拟量输出&#xff1b;8路DIO &#xff1b;8路PFI&#xff1b;1路32位多功能计数器。PC…...

spark2.4.4有哪些主要的bug

Issue Navigator - ASF JIRA -...

信息学奥赛一本通 1347:【例4-8】格子游戏

【题目链接】 ybt 1347&#xff1a;【例4-8】格子游戏 【题目考点】 1. 并查集&#xff1a;判断无向图是否有环 【解题思路】 该题为判断无向图是否有环。可以使用并查集来完成。 学习并查集时&#xff0c;每个元素都由一个整数来表示。而该问题中每个元素是一个坐标点&a…...

acwing3417. 砝码称重

acwing3417. 砝码称重算法 1: DFS算法2 : DP算法 1: DFS /*** 数据范围 对于 50%的评测用例&#xff0c;1≤N≤15. 对于所有评测用例&#xff0c;1≤N≤100&#xff0c;N 个砝码总重不超过 1e5. */ /* 算法 1: DFS 思路 : 对于每个砝码,有放在左边,放在右边,和不放三种选择,使…...

生成式 AI:百度“文心一言”对标 ChatGPT?什么技术趋势促使 ChatGPT 火爆全网?

文章目录前言一、生成式 AI 的发展和现状1.1、什么是生成式 AI&#xff1f;1.2、生成式 AI 的发展趋势1.3、AI 生成内容的业务场景和分类二、生成式 AI 从分析领域到创作领域2.1、 降低内容创作门槛&#xff0c;增加 UGC 用户群体2.2、提升创作及反馈效率&#xff0c;铺垫线上实…...

PCL 非线性最小二乘法拟合圆柱

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里通过非线性最小二乘的方法来实现圆柱体的拟合,具体的计算过程如下所述: 图中, p p p为输入数据的点位置,求解的参数为柱体的轴向向量 a...

【设计模式】迪米特法则

文章目录一、迪米特法则定义二、迪米特法则分析三、迪米特法则实例一、迪米特法则定义 迪米特法则(Law of Demeter, LoD)&#xff1a;一个软件实体应当尽可能少地与其他实体发生相互作用。 二、迪米特法则分析 如果一个系统符合迪米特法则&#xff0c;那么当其中某一个模块发…...

CSS3笔试题精讲1

Q1 BFC专题 防止父元素高度坍塌 4种方案 父元素的高度都是由内部未浮动子元素的高度撑起的。 如果子元素浮动起来,就不占用普通文档流的位置。父元素高度就会失去支撑,也称为高度坍塌。 即使有部分元素留在普通文档流布局中支撑着父元素,如果浮动 起来的元素高度高于留下的…...

交叉编译用于移植的Qt库

前言 如果在Ubuntu上使用qt开发可移植到周立功开发板的应用程序,需要在Ubuntu上交叉编译用于移植的Qt库,具体做法如下: 1、下载源码 源码qt-everywhere-opensource-src-5.9.6.tar.xz拷贝到ubuntu自建的software文件下 2、解压 点击提取到此处 3、安装配置 运行脚本文…...

泰凌微TLSR8258 zigbee开发环境搭建

目录必备软件工具抓包分析辅助工具软件开发包PC 辅助控制软件 (ZGC)必备软件工具 下载地址&#xff1a;http://wiki.telink-semi.cn/ • 集成开发环境: TLSR8 Chips: Telink IDE for TC32 TLSR9 Chips: Telink RDS IDE for RISC-V • 下载调试工具: Telink Burning and Debugg…...

C#实现商品信息的显示异常处理

实验四&#xff1a;C#实现商品信息的显示异常处理 任务要求&#xff1a; 在进销存管理系统中&#xff0c;商品的库存信息有很多种类&#xff0c;比如商品型号、商品名称、商品库存量等。在面向对象编程中&#xff0c;这些商品的信息可以存储到属性中&#xff0c;然后当需要使…...

细数N个获取天气信息的免费 API ,附超多免费可用API 推荐(三)

前言 市面上有 N 多个查询天气信息的软件、小程序以及网页入口&#xff0c;基本都是通过调用天气查询 API 去实现的。 今天整理了一下多种场景的天气预报API 接口分享给大家&#xff0c;有需要赶紧收藏起来。 天气预报查询 天气预报查询支持全国以及全球多个城市的天气查询…...

20230404英语学习

今日单词 decade n.十年 allocate vt.分配&#xff0c;分派&#xff0c;把…拨给 compress v.压缩&#xff1b;缩短&#xff1b;浓缩 regenerate v.&#xff08;使&#xff09;复兴&#xff0c;&#xff08;使&#xff09;振兴&#xff1b;&#xff08;使&#xff09;再生 …...

冒泡排序 快排(hoare递归)

今天要讲一个是冒泡排序&#xff0c;进一个是快排&#xff0c;首先是冒泡排序&#xff0c;我相信大家接触的第一个排序并且比较有用的算法就是冒泡排序了&#xff0c;冒泡排序是算法里面比较简单的一种&#xff0c;所以我们先看看一下冒泡排序 还是个前面一样&#xff0c;我们…...