【C++】STL 标准模板库

前言

在前一章种我们介绍了C++中的模板的使用,这是一种泛型编程,模板的使用能让我们减少大量的相似代码,减少我们的代码量与工作量,写出更加高效简洁的代码,模板如此好用,但还是要我们先出写一个泛型类或函数,才能使用。有没有办法直接不写泛型类或函数就能使用一些常见的数据结构与算法的代码呢?答案是有的!C++给我们提供了标准模板库STL,这是一个相当重要的库,它就完美解决了上面的问题,相信学完以后你会对它爱不释手!

STL 标准模板库

  • STL的介绍
    • 1. 什么是STL
    • 2. STL的版本
    • 3. STL的六大组件
    • 4、学习博客


STL的介绍

1. 什么是STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架

2. STL的版本

  • 原始版本
    Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖。
  • P. J. 版本
    由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。
  • RW版本
    由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。
  • SGI版本
    由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格上看,阅读性非常高。如果你要深入学习STL想要阅读部分源代码,可以主要参考这个版本。

3. STL的六大组件

在这里插入图片描述

4、学习博客

  • vector的使用 以及 迭代器失效问题
  • vector的模拟实现
  • list的模拟实现
  • 反向迭代器的设计
  • STL中的容器适配器 stack queue 和 priority_queue 的模拟实现
  • deque的实现原理简单介绍

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

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

相关文章

(一)基于IDEA的JAVA基础9

循环结构及特点 while循环 do while循环 for 循环 特点:有循环条件 循环起始值 循环自增量(每次自增的量) 循环操作 while循环 语法: 初始部分//定义变量的地方,声明变量 while(循环条件){ 循环操作; 迭代部分; } 流程图: 练习:打…

giteed的使用

1. 将工作区的内容添加到暂存区 你的工作区要有内容(.git 不算) 注意:空文件可以添加,但是空文件夹不管 如果没有形成历史版本之前,暂存区的同名文件会被覆盖 //打开命令行,切换到 .git所在的目录&…

CleanMyMac X2024专业免费的国产Mac笔记本清理软件

非常高兴有机会向大家介绍CleanMyMac X 2024这款专业的Mac清理软件。它以其强大的清理能力、系统优化效果、出色的用户体验以及高度的安全性,在Mac清理软件市场中独树一帜。 CleanMyMac X2024全新版下载如下: https://wm.makeding.com/iclk/?zoneid49983 一、主要…

光伏百科|分布式光伏电站如何开展运维管理工作?

随着经济的不断发展和生活水平的日益提高,节能环保已经成为全社会的责任和共识,分布式光伏电站作为清洁能源走进了千家万户。然而,在分布式光伏电站运行期间,面临监管困难、系统繁多、火灾隐患和运维不当等困难,该如何…

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二)

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二) 说明记录 说明 简单介绍罗德里格斯变换以及OpenCV中的实现函数 记录

机器视觉矿山安全生产风险预警系统

一、简介 十四五规划和2035年远景目标纲要针对企业安全生产提出了多项要求。其中,提高安全生产水平要求完善和贯彻执行安全生产责任制,建立公共安全隐患排查和安全预防控制体系,要求将安全生产提升至预防和控制阶段。 目前,矿山…

案例研究|DataEase实现物业数据可视化管理与决策支持

河北隆泰物业服务有限责任公司(以下简称为“隆泰物业”)创建于2002年,总部设在河北省高碑店市,具有国家一级物业管理企业资质,通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今,隆…

鸿蒙HarmonyOS应用开发之NDK开发导读

NDK(Native Development Kit)是OpenHarmony SDK提供的Native API、相应编译脚本和编译工具链的集合,方便开发者使用C或C语言实现应用的关键功能。NDK只覆盖了OpenHarmony一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统…

uniapp实现单选组件覆盖选中样式

uniapp实现单选组件覆盖选中样式 完整代码&#xff1a; <!-- 是否选择组件: trueOfFalseChooseBtn --> <template><view class"is-true-body"><view class"btn-con" :class"isTrue ? btn-con-active : " click"clic…

牛客NC79 丑数【中等 堆、优先级队列 Java,Go,PHP Go和PHP中我自己实现了优先级队列】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b 思路 注意&#xff1a; 数据范围&#xff1a;0≤n≤2000&#xff0c; 2000肯定到不了&#xff0c;最多到1690&#xff0c;相同题目链接&#xff1a;https://www.lintcode.com…

计算机网络——28自治系统内部的路由选择

自治系统内部的路由选择 RIP 在1982年发布的BSD-UNIX中实现Distance vector算法 距离矢量&#xff1a;每条链路cost 1&#xff0c;# of hops(max 15 hops)跳数DV每隔30秒和邻居交换DV&#xff0c;通告每个通告包括&#xff1a;最多25个目标子网 RIP通告 DV&#xff1a;在…

sqlite跨数据库复制表

1.方法1 要将 SQLite 数据库中的一个表复制到另一个数据库&#xff0c;您可以按照以下步骤操作&#xff1a; 备份原始表的SQL定义和数据&#xff1a; 使用 sqlite3 命令行工具或任何SQLite图形界面工具&#xff0c;您可以执行以下SQL命令来导出表的SQL定义和数据&#xff1a…