![](https://img-blog.csdnimg.cn/20200408163337517.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++ 标准模板库(STL)详解
文章平均质量分 50
在C++开发中,STL会一直伴随着我们,平时用的非常多,但很多时候都是用而用,而没去系统的整理过,该专栏会详细介绍每一个容器,并区别在什么场景适合选择何种容器。该专栏作为自己整理记录,方便以后查询,如果能帮到您,那深感荣幸。
SunkingYang
C++资深工程师,拥有12年C++开发经验。
期间从事Windows客户端及Linux服务端开发。客户端有ActiveX、MFC、QT,医疗虚拟与现实(Ogre、QT、OpenCV等),三维人脸识别。
拥有4年天网视频监控开发经验,包含ocx插件开发、国标解码库:软解码和硬解码开发等(Windows平台),2年雪亮工程国标服务开发经验,包含国标28181级联服务、国标流媒体等(Linux平台)。
展开
-
C++如何判断相对路径和绝对路径
无论使用哪种方法,请确保你的编译器支持C++17或以上版本,并链接。才能使用文件系统库。原创 2024-02-05 16:56:38 · 675 阅读 · 0 评论 -
如何使用C++开发集群服务
编写服务端程序:使用C++语言编写服务端程序,根据需求使用不同的框架和库,例如使用Boost或Qt网络库实现网络通信,使用RabbitMQ或Zookeeper等中间件实现数据同步、负载均衡等。实现负载均衡:采用常见的负载均衡算法,例如RR(Round Robin)、Hash等分配请求到不同的服务器上,以实现负载均衡的目的。编写客户端程序:使用C++语言编写客户端程序,实现与服务端的通信,解析请求和响应,实现前端界面等。设计服务架构:根据需求设计好服务的架构,包括前后端交互接口、数据结构、算法等。原创 2023-11-30 09:09:27 · 487 阅读 · 0 评论 -
C++ 将一个vector内容赋值给另一个vector,及swap与assign的区别
赋值在本文中,我们将介绍5种将一个vector内容赋值给另一个vector的方式:赋值方式一、申明时赋值方式二、使用assign赋值方式三、使用swap赋值方式四、迭代器遍历赋值方式五、直接用等号(=)赋值swap与assign的区别我们此处主要讨论它们两的用作用和效率。作用swap和assign都可以用在将一个vector的内容全部复制给另外一个vector,区别是swap会改变源vector,而assign会清空目的vector后再将源vector的值全部插入到目的vector中。原创 2023-02-17 11:39:40 · 9482 阅读 · 0 评论 -
FillRect与FrameRect用法
文章来源:http://blog.csdn.net/zhouqian88423/article/details/4950482FillRect 函数功能:该函数用指定的画刷填充矩形,此函数包括矩形的左上边界,但不包括矩形的右下边界。 函数原型:int FillRect(HDC hdc, CONST RECT *lprc, HBRUSH hbr); 参数: hdc原创 2013-11-19 09:46:56 · 4144 阅读 · 0 评论 -
std::vector介绍
文章来源:http://blog.csdn.net/willoj/article/details/2252543vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。原创 2013-11-24 13:42:40 · 665 阅读 · 0 评论 -
STL之容器适配器(二)、stack
容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。stack<T>容器适配器中的数据是以 LIFO 的方式组织的,这和自助餐馆中堆叠的盘子、箱子中的一堆书类似。图 1 展示了一个理论上的 stack 容器及其一些基本操作。只能访问 stack 顶部的元素;只有在移除 stack...原创 2020-04-10 17:17:46 · 249 阅读 · 1 评论 -
STL之容器适配器(一)、简述
容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。这里有 3 种容器适配器:stack<T>:是一个封装了 deque<T> 容器的适配器类模板,默认实现的是一个后入先出(Last-In-First-Out,LIFO)的压入栈。stack<T> 模板...原创 2020-04-10 16:41:40 · 292 阅读 · 0 评论 -
STL之序列式容器(六)、forward_list容器
forward_list 容器以单链表的形式存储元素。forward_list 的模板定义在头文件 forward_list 中。fdrward_list 和 list 最主要的区别是:它不能反向遍历元素;只能从头到尾遍历。forward_list 的单向链接性也意味着它会有一些其他的特性:无法使用反向迭代器。只能从它得到const或non-const前向迭代器,这些迭代器都不能解引用,只能...原创 2020-04-10 15:09:03 · 347 阅读 · 0 评论 -
STL之序列式容器(五)、list容器
一、list(STL list)使用、创建和初始化list<T> 容器模板定义在 list 头文件中,是 T 类型对象的双向链表。list 容器具有一些 vector 和 deque 容器所不具备的优势,它可以在常规时间内,在序列已知的任何位置插入或删除元素。这是我们使用 list,而不使用 vector 或 deque 容器的主要原因。list 的缺点是无法通过位置来直接访问序...原创 2020-04-10 14:50:04 · 734 阅读 · 0 评论 -
STL之序列式容器(四)、deque容器
一、deque使用、创建及初始化详解deque<T>,一个定义在 deque 头文件中的容器模板,可以生成包含 T 类型元素的容器,它以双端队列的形式组织元素。可以在容器的头部和尾部高效地添加或删除对象,这是它相对于 vector 容器的优势。当需要这种功能时,可以选择这种类型的容器。无论何时,当应用包含先入先出的事务处理时,都应该使用 deque 容器。处理数据库事务或模拟一家超...原创 2020-04-10 11:20:17 · 292 阅读 · 0 评论 -
STL之序列式容器(二)、array容器
一、array的用法及初始化array<T,N> 模板定义了一种相当于标准数组的容器类型。它是一个有 N 个 T 类型元素的固定序列。除了需要指定元素的类型和个数之外,它和常规数组没有太大的差别。显然,不能增加或删除元素。模板实例的元素被内部存储在标准数组中。和标准数组相比,array 容器的额外开销很小,但提供了两个优点:如果使用 at(),当用一个非法的索引访问数组元素时,...原创 2020-04-09 16:13:24 · 553 阅读 · 0 评论 -
STL之序列式容器(一)、什么是序列式容器
前言序列容器以线性序列的方式存储元素。它没有对元素进行排序,元素的顺序和存储它们的顺序相同。一般来说,有 5 种标准的序列容器,每种容器都具有不同的特性:array<T,N> (数组容器) :是一个长度固定的序列,有N个T类型的对象,不能增加或删除元素。vector (向量容器) :是一个长度可变的序列,用来存放T类型的对象。必要时,可以自动增加容量,但只能在序列的末尾高效地...原创 2020-04-09 14:44:04 · 1505 阅读 · 0 评论 -
STL之字符串类模板 string(三)、C++ string类成员函数
前言之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联。我们尽可以把它看成是C++的基本数据类型。构造函数功能产生或复制字符串构造string(const c...原创 2020-04-09 11:02:32 · 228 阅读 · 0 评论 -
STL之字符串类模板 string(二)、C++ basic_string(字符串类模板)
“字符” 本身是个有趣的抽象概念。例如,在纸上或者屏幕上,字符 “C” 仅仅是一段曲线而已。在计算机中,用一个 8 Byte 存储该字符,并赋值 67;字符 “C” 还是拉丁字母的第三个字母;在化学专业,字符 “C” 是原子碳的缩写形式;在计算机学科中,字符 “C” 又被用来表示一种程序设计语言的名字。目前,在计算机领域,字符集合是在字符与整数值之间的一种映射关系。C++ 程序员通常假定能够...原创 2020-04-08 18:05:55 · 338 阅读 · 0 评论 -
STL之字符串类模板 string(一)、C++ string类库简介
前言在最初的 C 语言中,头文件 string.h 提供了一系列字符串函数。早期的 C++ 也为处理字符串提供了类。string 类由头文件 支持,该类包含了大量方法及若干构造函数,用于将字符串赋给变量、合并字符串、比较字符串和访问各个元素的重载操作符、查找字符和子字符串的方法等。到目前为止,string 已被用户广泛接受及使用。C++ 从 C 继承的字符串概念仍然是以 ‘\0’ 为结束符的...原创 2020-04-08 17:41:52 · 499 阅读 · 0 评论