C++ 中常用的 STL

标准模板库 (STL) 是 C++ 标准库中一个强大的组件,它提供了各种通用数据结构和算法。STL 旨在提高代码的可重用性、效率和可读性。本文将介绍 C++ 中一些常用的 STL,并提供代码示例。

容器

容器是用于存储和组织数据的对象。STL 中提供了以下几种容器:

  • vector:一个动态数组,可以高效地添加和删除元素。
#include <vector>int main() {std::vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);for (int i : v) {std::cout << i << " ";}std::cout << std::endl;return 0;
}
  • list:一个双向链表,可以高效地插入和删除元素。
#include <list>int main() {std::list<int> l;l.push_back(1);l.push_back(2);l.push_back(3);for (int i : l) {std::cout << i << " ";}std::cout << std::endl;return 0;
}
  • set:一个无序集合,其中元素是唯一的。
#include <set>int main() {std::set<int> s;s.insert(1);s.insert(2);s.insert(3);for (int i : s) {std::cout << i << " ";}std::cout << std::endl;return 0;
}
  • map:一个关联容器,其中键与值相关联。
#include <map>int main() {std::map<int, std::string> m;m[1] = "one";m[2] = "two";m[3] = "three";for (auto it = m.begin(); it != m.end(); ++it) {std::cout << it->first << " => " << it->second << std::endl;}return 0;
}

算法

STL 还提供了各种算法,用于对容器中的元素进行操作。以下是一些常用的算法:

  • sort:对容器中的元素进行排序。
#include <algorithm>
#include <vector>int main() {std::vector<int> v = {3, 1, 2};std::sort(v.begin(), v.end());for (int i : v) {std::cout << i << " ";}std::cout << std::endl;return 0;
}
  • find:在容器中查找特定元素。
#include <algorithm>
#include <vector>int main() {std::vector<int> v = {3, 1, 2};std::vector<int>::iterator it = std::find(v.begin(), v.end(), 2);if (it != v.end()) {std::cout << "Found 2 at index " << it - v.begin() << std::endl;} else {std::cout << "2 not found" << std::endl;}return 0;
}
  • count:计算容器中特定元素出现的次数。
#include <algorithm>
#include <vector>int main() {std::vector<int> v = {3, 1, 2, 2};int count = std::count(v.begin(), v.end(), 2);std::cout << "2 appears " << count << " times" << std::endl;return 0;
}

迭代器

迭代器是用于遍历容器中元素的特殊对象。STL 提供了以下几种迭代器:

  • begin:返回容器的第一个元素的迭代器。
  • end:返回容器的最后一个元素的迭代器。
  • rbegin:返回容器的第一个元素的逆向迭代器。
  • rend:返回容器的最后一个元素的逆向迭代器。

代码演示:

// 使用迭代器遍历 vector
for (std::vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {std::cout << *it << " ";
}

结论

STL 是 C++ 中一个强大的工具,它提供了各种通用数据结构和算法。通过使用 STL,开发人员可以提高代码的可重用性、效率和可读性。本文介绍了一些常用的 STL,但还有许多其他有用的组件可供探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis I/O多路复用

I/O多路复用 Redis的I/o多路复用中&#xff0c;将多个连接放到I/O复用程序中&#xff0c;这个复用程序具体是什么&#xff0c;是Redis的主线程吗 在Redis的I/O多路复用机制中&#xff0c;“复用程序”实际上指的是操作系统提供的系统调用接口&#xff0c;如Linux下的epoll、sel…

ZYNQ学习之Ubuntu环境下的Shell与APT下载工具

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 一、Ubuntu Shell操作 简单的说Shell 就是敲命令。国内把 Linux 下通过命令行输入命令叫…

如何本地搭建群晖虚拟机并实现无quickconnect服务环境远程访问

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

蓝桥04数组矩阵

04数组矩阵 顺时针打印二维数组 0所在行列清零 z字形打印二维数组 找出边界为1的最大子方针 返回子数组最大累加和 子矩阵最大累加和 矩阵运算 顺时针打印二维数组 int[][] arr {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19,20}};int r 0;int c 0;int…

中国象棋C++

题目描述 在中国象棋中正所谓新手玩车&#xff0c;熟手玩炮&#xff0c;老手玩马&#xff0c;由此可见象棋中炮的地位还是比较高的。 给定一个nm的棋盘&#xff0c;全部摆满炮&#xff0c;我们视所有炮都不属于同一阵营&#xff0c;他们之间可以相互攻击但不能不进行攻击直接移…

解密Google Cloud 全新 PaLM2及创新应用

&#x1f4f8;背景 因长期在大模型相关的部门工作&#xff0c;每天接收到很多和AI相关的信息&#xff0c;但小编意识到目前理解到的一些AI知识还有些片面。 恰逢稀土掘金开发者大会有谈到大模型相关的知识&#xff0c;于是借此机会&#xff0c;对大模型相关的一些知识再了解一…

面试问答:什么是索引?它有哪些优缺点?它的适用/不适用场景?哪些情况会造成索引失效?

文章目录 &#x1f412;个人主页&#xff1a;信计2102罗铠威&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;什么是索引&#xff1f;&#xff08;按角度答&#xff01;&#xff1a;作用&#xff0c;存放位置&#xff09;&#x1f415;索引的优缺点&…

递归——N皇后

用递归替代多重循环 什么是N皇后&#xff1a; 在nn格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题等价于在nn的棋盘上放置n个皇后&#xff0c;任何2个皇后不妨在同一行或同一列或同一…

【SpringCloud】探索Eureka注册中心

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …

Protobuf基础使用

Protobuf是什么 在我们日常编写代码的过程中&#xff0c;经常会涉及到网络传输的部分。我们通常会在网络之间传递各种各样的请求&#xff0c;但是在我们日常架构之中&#xff0c;经常会涉及后端服务器之间的通信&#xff0c;通信过程中&#xff0c;可能传递的对象就是一个类。…

ECA-Net:用于深度卷积神经网络的高效通道注意力

摘要 arxiv.org/pdf/1910.03151.pdf 最近,通道注意机制已被证明在改善深度卷积神经网络(CNN)的性能方面具有巨大潜力。然而,大多数现有方法致力于开发更复杂的注意模块以实现更好的性能,这不可避免地会增加模型的复杂性。 为了克服性能和复杂性折衷之间的矛盾,本文提出…

【vscode打开多文件夹】

1)将文件夹添加到工作空间中 2)文件夹方式展开 3)最终效果 小技巧&#xff1a; 文件夹的位置不对的话&#xff0c;可以拖动进行调整。

Linux--动静态库的原理和使用详解

本文介绍了Linux系统中动态库与静态库的概念、原理以及使用方法。通过深入讲解动态库与静态库的区别和优劣势&#xff0c;帮助读者更好地理解并选择合适的库类型来进行软件开发。 动态库和静态库的概念 动态库&#xff08;Dynamic Link Library&#xff0c;简称DLL&#xff09…

mysql5.7.19 winx64解压缩版安装配置教程

mysql5.7.19 winx64解压缩版安装配置教程 这篇文章主要为大家详细介绍了mysql5.7.19 winx64解压缩版安装配置教程&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下 记录了mysql 5.7.19 winx64解压缩版安装教程&#xff0c;具体内容如下 系统环境&am…

优化金融展厅设计,细节提升客户体验与实用效能

“很赚钱”大部分公众对金融行业的第一印象&#xff0c;这足以见得金融行业在社会经济发展中的重要性&#xff0c;而为了更好的宣传和科普金融相关信息&#xff0c;金融展厅的设计和建设成为了重要措施&#xff0c;它能够充分展示金融机构的实力、品牌形象和服务优势&#xff0…

Jmeter使用BeanShell保存数据到文件

1、目的 在使用jmeter压测时&#xff0c;业务上下连贯&#xff0c;需要对一些编号进行关联操作。这里使用‘JSON提取器’将值提取出来&#xff0c;后面请求可以直接使用。其它业务想要使用就只能把值保存到文件&#xff0c;再使用文件做参数化了。 2、JSON提取器 提取请求值 提…

网站监控工具必要的功能

什么是网站监控 网站监控是持续跟踪网站在互联网上的性能和可用性&#xff0c;以确保其正常运行并提供良好的用户体验的过程&#xff0c;在当今的数字时代&#xff0c;一个表现良好的网站对公司的声誉至关重要&#xff0c;打开速度慢的网站会对用户体验产生负面影响&#xff0…

SSM(Spring+SpringMVC+MyBatis) 整合案例详细步骤

SSM 整合简介 SSM整合是指将Spring、Spring MVC和MyBatis三个开源框架结合使用&#xff0c;来搭建企业级Java Web应用的后端架构。每个框架在整体架构中承担不同的职责&#xff1a; Spring&#xff1a;作为核心控制层框架&#xff0c;负责管理对象&#xff08;Bean&#xff09;…

leetcode 347.前K个高频元素

题目 思路 1.统计每个数出现的次数&#xff1a;可以用HashMap。key为num,value为这个数出现的次数。 2.怎样返回HashMap中value最大的前k个key呢&#xff1f; 这里用优先队列的方法&#xff08;本质是堆&#xff09; 我们要维护一个小根堆。我们在堆中存储&#xff08;key,…

APP信息收集思路总结(反代理,反虚拟机,反证书校验思路整理)

前言 本文是我在学习过程中的总结&#xff0c;希望可以被指导提议指正。 APP概况 app跟一个网站很像。 网站分为前端后端。 app就好像网站的前端一样&#xff0c;app不需要浏览器&#xff0c;而前端需要浏览器。 他们都需要服务器&#xff0c;也就是说&#xff0c;进行we…