C++ STL 容器
文章平均质量分 51
Love coldplay
正在努力学习数据结构与算法!
展开
-
C++笔记 C++标准模板库(STL)之序列容器详解
并且更重要的一点是,deque容器中存储元素并不能保证所有元素都存储到连续的内存空间中,严格的讲,其没有capacity的概念,是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,也就是说它不用像vector那样去预留一部分空间,即reserve功能。,提供了访问容器中对象的方法。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象,函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用;...原创 2022-07-31 10:21:47 · 463 阅读 · 1 评论 -
如何生成dll文件 采用VS2017生成dll文件(动态库文件)和lib文件(静态库文件)以C语言为例
下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件)生成动态库文件姿势一:第一步:新建一个项目第二步:选择Windows桌面向导(这里先不要去管上面的“动态链接库(DLL)”)第三步:选择动态链接库,并空项目打勾√第四步:添加一个.c源文件第五步:(因为这里以C语言为例子,将后缀改为.c)第六步:在c文...原创 2022-04-03 22:55:29 · 15547 阅读 · 7 评论 -
C++笔记 STL list容器的反转和排序(升序和降序)
功能描述:将容器中的元素反转,以及将容器中的数据进行排序函数原型:reverse();//反转链表 sort();//链表排序sort 排序算法是快速排序,必须支持随机存储的数据结构才能实现标准算法库里面的全局函数 sort 不支持随机访问迭代器的容器,内部会提供一些算法可以调用成员函数// 3.7.7 list 反转和排序/*功能描述:将容器的元素进行反转,以及将容器的元素进行排序*///函数原型// reserve() 反转链表// ...原创 2022-03-26 19:50:57 · 762 阅读 · 0 评论 -
C++笔记 STL 容器set和multiset 的区别
和所有关联式容器类似,通常使用平衡二叉树完成。事实上,set和multiset通常以红黑树实作而成。自动排序的优点是使得搜寻元素时具有良好的性能,具有对数时间复杂度。但是造成的一个缺点就是:不能直接改变元素值。因为这样会打乱原有的顺序。改变元素值的方法是:先删除旧元素,再插入新元素。存取元素只能通过迭代器,从迭代器的角度看,元素值是常数。...原创 2022-04-02 19:19:06 · 842 阅读 · 0 评论 -
一文搞懂 条件编译和预处理指令 #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined 详解
本文主要介绍c语言中条件编译相关的预编译指令,包括#define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined。#define 定义一个预处理宏#undef 取消宏的定义#if 编译预处理中的条件命令,相当于C语法中的if语句#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句#ifndef 与#i...原创 2022-04-01 23:30:07 · 5960 阅读 · 0 评论 -
C++笔记 STL map容器基本操作 排序
map默认按照key进行升序排序,和输入的顺序无关。 为了实现快速查找,map内部本身就是按序存储的(比如红黑树)。在我们插入<key, value>键值对时,就会按照key的大小顺序进行存储,其中key的类型必须能够进行 < 运算,且唯一,默认排序是按照从小到大便利记忆联想到需要支持小于运算。1、使用迭代器进行遍历打印void printMap1(map<int, int, MyCompare> &m){ for (map<int,...原创 2022-03-31 23:25:22 · 2046 阅读 · 0 评论 -
C++笔记 STL vector容器 详解及基本用法
1、vector是可变长的动态数组1、Vector是可变长的动态数组,支持随机访问迭代器,所有STL算法都能对vector进行操作。使用时需包含头文件vector。2、vector与普通数组区别2、 vector 数据结构和数组非常相似,也被称之为单端数组// vector与普通数组区别//1、不同之处在于数组是静态空间,而 vector 可以动态扩展// 动态扩展:// 并不是在原来空间之后 继续接新空间 // 而是寻找更大的内存空间,然后将原数据拷贝...原创 2022-03-28 10:31:58 · 952 阅读 · 0 评论 -
C++笔记 STL容器 --- 定长数组 array容器
c++ 11中提供了数组类Array(容器)该Array的引入引入为C风格的数组提供了更好的选择。array类相对于C风格的数组有以下的优点:1. 数组类(Array class)知道自己的大小,而C风格的数组缺乏此属性。所以当传递给函数时,我们不需要把数组的大小作为单独的参数传递。2. 使用C风格的数组,数组退化为指针的风险更大;而数组类不会衰退为指针。3. Array通常比C风格的数组更有效、更轻、更可靠。array是什么? 就是一个定长数组 可以把对象当成一个数组名注意事项:..原创 2022-03-30 21:25:04 · 956 阅读 · 0 评论 -
C++笔记 命名空间 namespace,全局作用域符::的使用
namespce命名空间主要用途 // 1.用来解决命名冲突的问题// 2.命名空间下可以存放函数,变量,结构体,类;// 3.命名空间必须定义在全局作用域下,不能定义在局部中// 4.命名空间可以嵌套命名空间// 5.命名空间是开放的。可以随时向空间中添加新的成员 采用合并策略// 6.命名空间可以是匿名的,没有空间名,相当于全局变量// 7.命名空间可以取个别名原创 2022-01-23 08:55:55 · 459 阅读 · 0 评论 -
C++笔记 STL 仿函数
最近再看STL源码的时候看到里面的实现用了大量的仿函数,然后上网搜集了一些关于仿函数的知识。 Functor(仿函数), 或者称之为function object(函数对象), 是STL的四大组件之一。仿函数是一个能行使函数功能的类。 本质:所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。 仿函数的语法几乎和我们普通的函数调用一样,不过作为仿函数的类,都必须重载 operator() 运算符。因为调用仿函数,实...原创 2022-03-30 17:05:05 · 784 阅读 · 0 评论 -
C++笔记 set自定义排序,仿函数 掌握如何改变排序规则
1、学习目标:set容器默认排序规则为从小到大,掌握如何改变排序规则主要技术点:利用仿函数,可以改变排序规set容器排序:存放自定义数据类型; 自定义数据类型:都会指定排序规则2、了解仿函数仿函数functor的英文解释为something that performs a function,即其行为类似函数的东西。C++中的仿函数是通过在类中重载()运算符实现,使你可以像使用函数一样来创建类的对象。要求传入仿函数的地方也很好理解,一般C++模板,尖括号<>里面放的是类型,自然这...原创 2022-03-29 19:04:24 · 1741 阅读 · 1 评论 -
C++ STL set容器常用用法 set 容器查找和统计
set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset原创 2022-03-28 20:28:48 · 4089 阅读 · 2 评论