关于STL和Boost的理解

2023-05-16

1.STL

STL是standard Template Library即标准模板库的英文缩写,是惠普实验室开发的一系列软件的统称。从根本上讲,STL是一些“容器”的集合,这些容器有list,vector,map,set等,同时它也是一些算法和其他组件的集合。STL的目的就是标准化组件,不用再重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装。

在C++标准中,STL被组织为下面的17个头文件:<algorithm>、<deque>、<functional>、<iterator>、<array>、<vector>、<list>、<forward_list>、<map>、<unordered_map>、<memory>、<numeric>、<queue>、<set>、<unordered_set>、<stack>和<utility>。

STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分

关于容器的理解:容器就是数据在内存中组织的方法,例如数组、堆栈、队列、链表和二叉树等。通俗点就是装东西的东西;如杯子

对算法的理解:是应用在容器上以各种方法处理其数据的的功能和行为。例如对其数据进行排序、检索和合并等的算法。通俗讲就是就是处理容器里面数据的方法,如往杯子里面倒水。

迭代器:迭代器就是使容器和数据行为(算法)相互作用,可以把迭代器看做是指向容器中元素的一个普通指针,可以依次指向元素的一个后继元素。迭代器将容器和算法联系在了一起。通俗讲,迭代器就是往杯子里面倒水的水壶,把杯子和水联系在了一起,起到一个中介的作用。

参考文献:http://blog.sina.com.cn/s/blog_4bbfa6a101000ay2.html

2.Boost库

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。


其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库使用Boost License来授权使用,根据该协议,商业的非商业的使用都是允许并鼓励的。  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于STL和Boost的理解 的相关文章

  • 配置错误:无法链接到 boost_system

    我正在尝试在 Debian 上安装一个软件包 足球模拟器 2d 当我进入目录并运行时 configure 我得到以下信息 reza debian soccer rcssserver 15 0 1 configure checking for
  • 升压参数库

    最近我发现参数 http www boost org doc libs 1 50 0 libs parameter doc html index htmlBoost 中的库 老实说 我不明白为什么这是 Boost 的一部分 当需要向函数传递
  • 从 STL 容器并行读取

    从多个并行线程读取 STL 容器是安全的 然而 表现却很糟糕 为什么 我创建了一个小对象 将一些数据存储在多重集中 这使得构造函数相当昂贵 在我的机器上大约为 5 usecs 我将数十万个小对象存储在一个大型多重集中 处理这些对象是一项独立
  • 如何从 wfstream 读取二进制数据?

    我从文件读取数据时遇到一个小问题 我希望能够读取 wstring 以及任意大小的原始数据块 大小以字节为单位 std wfstream stream file c str std wstring comType stream gt gt c
  • STL(标准模板库)中使用的设计模式

    我正在学习STL和设计模式 我想知道是否有任何文档或链接可以解释如何在 STL 中实现设计模式 我做了谷歌但无法获得太多数据 我希望你的意思是 哪些设计模式可以在STL中识别 STL 堆栈是一个容器适配器 适配器是一种设计模式 迭代器也是一
  • 为什么 `boost::any` 比 `void*` 更好?

    有什么先天优势boost any and boost any cast提供超过使用void and dynamic cast 优点是boost any比类型安全得多void E g int i 5 void p i static cast
  • 提高批量请求的野兽内存使用率

    我运行这个boost beast 客户端 异步 ssl http www boost org doc libs develop libs beast example http client async ssl http client asy
  • 带有自定义分配器的 std::string

    所以我目前正在编写一个内存调试器 为此我需要 stl 容器对象来使用未跟踪的分配器 我的整个代码库中都散布了 std string 因此我将其键入以使用未跟踪的分配器 typedef std basic string
  • 使用 Boost:Asio 的游戏服务器如何异步工作?

    我正在尝试创建一个游戏服务器 目前我正在使用线程来制作它 每个对象 玩家 怪物 都有自己的带有 while 1 循环的线程 在其中执行特定的功能 服务器基本上是这样工作的 main some initialization while 1 r
  • 我应该使用函数还是无状态函子?

    这两段代码做同样的事情 如您所见 它将用于排序函数 哪个更好 我通常写后一种 但我看到一些程序员像以前那样做 struct val lessthan binary function
  • Objective-C++ 中的 boost::shared_ptr

    这是对我之前提出的一个问题的更好理解 我有以下 Objective C 对象 interface OCPP MyCppobj cppobj end implementation OCPP OCPP init cppobj new MyCpp
  • 获取测试用例中的 BOOST TEST 测试套件名称

    我在用着BOOST TEST我想知道是否有办法找出test suite从里面test case 我知道我能找到test case的名字由 boost unit test framework current test case p name
  • C++类名冲突

    我现在正在做一个项目 需要整合两个子项目 项目A是用C 编写的 项目B是用C编写的 一个问题是 在项目B中 有一个名为vector它是由其作者创建的 在项目 A 中 std vector in STL用来 因为项目B以后可能会更新 所以我不
  • 提升 asio 和 endian

    我不知道 boost asio 是否处理字节序 Asio 确实会转换类似的东西port进入网络秩序 转换函数不作为官方接口的一部分公开 而是隐藏在detail名称空间代替 例如boost asio detail socket ops hos
  • 为什么 std::queue 使用 std::dequeue 作为底层默认容器?

    继续阅读cplusplus com http www cplusplus com reference queue queue std queue实现如下 队列被实现为容器适配器 这些类 使用特定容器类的封装对象作为其 底层容器 提供一组特定
  • 使用 boost::thread 特定的 ptr<>::get() 是否会很慢?有什么解决方法吗?

    我目前正在使用 Valgrind 的 Callgrind 分析一个存在性能问题的应用程序 在查看分析数据时 似乎有 25 的处理时间花费在boost detail get tss data在主要目的是物理模拟和可视化的应用程序中 get t
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • 将 Boost 库添加到 Windows Eclipse 中的 C++ 项目

    我最近使用安装程序在 Windows 上安装了 Boost 库 我试图链接到 Eclipse 中的库 但运气不佳 我尝试浏览 Project Properties gt C C Build gt Settings gt MinGW C Li
  • 如何对STL向量进行排序?

    我想排序一个vector vector
  • 构造一个包含变体类型索引中第 n 个类型的值的 boost 变体?

    我想构建boost variant包含默认构造值 用类型索引指定 无需在类型索引上编写我自己的 switch 语句 我想这个must不知怎的 用 MPL 可能吗 但为了澄清这一点 该指数is not编译时常量表达式 用例是我需要构造一个变体

随机推荐

  • CentOS7.6 上安装 Docker-CE-19.03.05(详细安装步骤)

    Docker 的安装说明 Docker 是一个开源的商业产品 xff0c 有两个版本 xff1a 社区版 xff08 Community Edition xff0c 缩写为 CE xff09 和企业版 xff08 Enterprise Ed
  • 在VMware的虚拟机上安装ProXmoX-VE(PVE)

    1 ProXmoX VE简介 PVE xff08 ProXmoX VE xff09 是一个开源的虚拟化管理软件 xff0c 类似ESXI xff0c 用户可以通过网页的方式来管理服务器 xff0c 使用kvm以及lxc技术运行虚拟机 xff
  • 在Vue3中使用Element Plus时 el-icon无法显示的问题

    问题描述 按照官方文档安装了icons span class token function npm span span class token function install span 64 element plus icons 然后在页
  • 无法定位程序输入点GetOverlappedResultEx 于动态链接库 KERNEL32.dll 上。

    问题说明 在Windows7上安装配置instantclient 19 12用于访问Oracle的客户端 xff0c 在使用sqlplus连接的时候 xff0c 弹出对话框 提示 无法定位程序输入点GetOverlappedResultEx
  • NPM离线包的制作和使用

    说明 常规情况 xff0c node安装依赖库使用npm install命令安装 它会从互联网上的npm中央仓库中下载对应的包文件 但是在有些情况下需要在没有互联网的情况下安装依赖库 xff0c 比如有些公司中 xff0c 开发环境无法直接
  • Ubuntu安装Python3.8

    在ubuntu上安装Python有两种方法 在线安装和源码编译安装 方法1 xff1a 使用apt在线安装 1 更新软件包列表并安装必备组件 xff1a span class token function sudo span span cl
  • 使用免费负载生成器swingbench对oracle数据库进行压力测试(测试Oracle的功能或评估性能)

    1 Swingbench 简介 Swingbench 是一个免费负载生成器 xff08 和基准测试 xff09 xff0c 旨在对 Oracle 数据库 进行压力测试 目前最新版本 Swingbench 2 6 SwingBench 由负载
  • 在CentOS7上升级OpenSSL3和 OpenSSH9.0p1

    1 说明 CentOS7 自带的 OpenSSH 版本 xff08 OpenSSH 7 4p1 OpenSSL 1 0 2k fips 26Jan 2017 xff09 漏扫出很多高 风险漏洞 xff0c 预采用升级处理 xff08 升至
  • 编译升级OpenSSL报错:Can‘t locate IPC/Cmd.pm

    错误信息 span class token punctuation span root 64 dowhere openssl 3 0 3 span class token punctuation span span class token
  • 安装Paddlepaddle2.4.2以后导入模块报错: ImportError: libcudart.so.10.2: cannot open shared object file: No su

    问题描述 在使用 python3 8 安装 paddle 以后 xff0c 测试导入 paddle 报错 创建环境并安装 span class token builtin class name source span activate pa
  • 人工智能导论考前整理-思考题部分

    以下均为个人观点 xff08 也参考资料得到 侵删 xff09 xff0c 仅供参考 xff0c 可考试前用 我们学校的考点是基本都在上面了 xff08 考题雷达嘿嘿 xff09 xff0c 不同学校不太一样 xff0c 以下是我之前考前边
  • 自抗扰控制器中扩张状态观测器的设计

    状态观测器是根据系统的输入输出来确定系统内部状态变量的装置 xff0c 它的示意图如下 xff1a 在自抗扰控制器的设计过程中 xff0c 我们通常把未知的干扰都用 f f f 来表示 xff0c 如果利用状态观测器可以将未知的干扰观测出来
  • 前端页面小图标不显示问题

    这个问题困扰了我好久 xff0c 主要报错是Origin 39 http localhost 39 is therefore not allowed access 等 起因是我引入bootstrap框架后后端页面的一些小图标不显示 xff0
  • Thinkphp审核功能的实现

    审核功能经过几个小时的奋战终于完成了 xff0c 现在我就与广大网友分享我的成果 我定义未审核为 1 xff0c 审核通过为1 xff0c 审核不通过为0 下面请看HTML代码 lt div class 61 34 table respon
  • Thinkphp修改密码的实现

    密码修改是开发中很基础的一个功能 密码修改的HTML代码如下 span span lt form method 61 post class 61 form horizo ntal action 61 gt span span span st
  • 二维数组的输入和输出

    二维数组我知道的有两种方法 第一种方法是平时常见的方法 xff0c 用两个循环 xff0c 例如 for i 61 0 i lt 61 n 1 i 43 43 for j 61 0 j lt 61 n 1 j 43 43 cin gt gt
  • 怎样把网站前端页面扒取

    在网上经常看到一些很好看的页面 xff0c 这些页面其实都可以把代码扒取下来的 xff0c 可以用浏览器的另存为 xff0c 也有一些相应的软件 浏览器扒取 以火狐为例 右键鼠标点击网页另存为 然后保存即可 软件扒取 这种扒取的软件有很多种
  • 算法题1

    假设有这样一个国家 xff0c 其法律规定当公民月收入为x时 xff0c 若x gt 1 则每月应当缴纳的税金为x的因数中除了x之外的最大值 同时该国法律允许公民将月收入分成若干部分 每部分均为整数 xff0c 要求每部分收入都大于1 xf
  • 3.4日期处理

    include lt iostream gt include lt cstdio gt 平年和闰年的每月的天数 int month 13 2 61 0 0 31 31 28 29 31 31 30 30 31 31 30 30 31 31
  • 关于STL和Boost的理解

    xff11 xff0e STL STL是standard Template Library即标准模板库的英文缩写 xff0c 是惠普实验室开发的一系列软件的统称 从根本上讲 STL是一些 容器 的集合 xff0c 这些容器有list vec