![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
文章平均质量分 83
SOC罗三炮
嵌入式软件开发,ARM CPU架构研究,某厂芯片SOC系统验证工程师
展开
-
C++vector等容器使用push_back和emplace_back的区别
http://c.biancheng.net/view/6826.html原创 2021-05-11 19:28:07 · 4881 阅读 · 2 评论 -
C++中vector/string的capacity、size、resize、reserve和clear功能详解
size() – 返回目前存在的元素数。即: 元素个数capacity() – 返回容器能存储 数据的个数。 即:容器容量reserve() --设置 capacity 大小resize() --设置 size ,重新指定有效元素的个数 ,区别与reserve()指定 容量的大小capacity 一般大于size的原因是为了避免 每次增加数据时都要重新分配内存,所以一般会 生成一个较大的空间,以便随后的数据插入。size是当前vector容器真实占用的大小,也就是容器当前拥有多少个容器。c原创 2020-10-31 18:17:27 · 2014 阅读 · 0 评论 -
C++中string类常用函数总结
string类的使用#include<string>using std::string;原创 2020-10-23 11:48:32 · 4431 阅读 · 0 评论 -
C++中vector的底层机制以及size和capacity的区别
vector底层机制vector可以看做是一个动态的数组,是一段连续的线性内存空间。它使用3个迭代器来表示://_Alloc 表示内存分配器,此参数几乎不需要我们关心template <class _Ty, class _Alloc = allocator<_Ty>>class vector{ ...protected: pointer _Myfirst; pointer _Mylast; pointer _Myend;};.原创 2021-03-29 14:41:17 · 2719 阅读 · 0 评论 -
C++七种序列容器详解
1,vector-向量vector模板类是最简单的序列类型,除非其他类型的特殊优点能更好地满足需求,否则应默认使用vector。底层数据结构为数组自动内存管理 随机访问元素 在尾部插入或删除元素,固定时间–O(1) 在头部插入和删除元素,线性时间—O(n) 可反转容器(rbegin(),rend())member functions:vector::assign vector::at vector::back vector::begin vector::capacity原创 2021-03-29 10:38:29 · 603 阅读 · 0 评论 -
C++使用队列实现二叉树的层序遍历(BFS广度优先搜索)
BFS 通常借助队列的先入先出特性来实现。算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ; 初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [root] ; BFS 循环: 当队列 queue 为空时跳出; 出队: 队首元素出队,记为 node; 打印: 将 node.val 添加至列表 tmp 尾部; 添加子节点: 若 node 的左(右)子节点不为空,则将左(右)子节点加入队列 queue ; 返回值: 返回打印结果列表 res...原创 2021-03-14 21:11:07 · 915 阅读 · 3 评论 -
C++类模板tuple(元组C++11)和pair的简单使用
tuple(元组)定义于头文件<tuple>,C++11特性;简介tuple是一个固定大小的异类值汇集,也就是说tuple是一个固定大小的不同类型值的集合,是泛化的std::pair。我们也可以把他当做一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体使程序更简洁,直观。std::tuple理论上可以有无数个任意类型的成员变量,而std::pair只能是2个成员,因此在需要保存3个及以上的数据时就需要使用tuple元组了。等价结构体str.原创 2020-12-15 16:17:51 · 704 阅读 · 0 评论 -
C++vector模板类(序列容器)功能总结
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。一,特点自动内存管理随机访问元素在尾部插入或删除元素,固定时间–O(1)在头部插入和删除元素,线性时间—O(n)可反转容器(rbegin(),rend())二,基本函数实现1.构造函数vector():创建一个空vectorvector(int nSize):创建一个vector,元素个原创 2020-10-30 15:48:50 · 673 阅读 · 0 评论 -
STL迭代器back_insert_iterator、front_insert_iterator和insert_iterator
模板使得算法独立于存储的数据类型。迭代器使得算法独立于使用的容器类型。迭代器类型输入迭代器输出迭代器正向迭代器双向迭代器随机访问迭代器迭代器具有层级结构:正向迭代器具有输入输出迭代器的全部功能,同时有自己的功能。双向迭代器具有输入输出迭代器的全部功能,同时还有自己的功能。随机访问迭代器具有正向迭代器的全部功能,同时还有自己的功能。每个容器都定义了一个类级typedef名称–iterator,因此vector< int >类的迭代器类型为vector< int &g原创 2020-11-02 20:53:23 · 716 阅读 · 0 评论 -
C++哈希表unordered_map的使用以及与map和hash_map的对比
哈希表c++中map与unordered_map的区别内部实现机理优缺点以及适用处map 优点map缺点unordered_map 优点unordered_map 缺点unordered_map是hash_map的替代名称hash_map原理unordered_map详解1. 原型2. 说明3. 容器属性4. 常用函数c++中map与unordered_map的区别内部实现机理map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,对于map进行的查找,删原创 2020-11-01 15:46:41 · 8082 阅读 · 0 评论 -
C++STL4种关联容器(set、multiset、map和multimap)
关联容器将值和键关联在一起,并使用键来查找值。特点:可对元素进行快速访问允许插入元素,但不能指定位置。通常使用某种数来实现。四种关联容器:set-集合set是最简单的关联容器,其值类型和键相同,键是唯一的,值在集合中不会重复出现。可反转,可以排序。...原创 2020-10-31 20:25:22 · 406 阅读 · 0 评论 -
STL容器的并集(set_union)、交集(set_intersection)和差集(set_difference)函数的使用
集合的交集并集和差集并不是只能用于set对象,STL提供了支持这些操作的算法,它们是通用函数。然而所有set对象都自动满足使用这些算法的先决条件—容器必须先经过排序。再三注意,使用这三个函数之前,容器必须先进行排序。set_union()set_intersection()set_difference()这三个函数的接口都相同,接受五个迭代器参数。前两个迭代器定义了第一个容器的区间,接下来两个迭代器定义了第二个容器的区间,最后一个迭代器是输出迭代器,指出将结果集合复制到什么位置。这几个函数的前四原创 2020-10-31 16:36:59 · 3463 阅读 · 1 评论 -
C++七种序列容器类型
七种序列容器1,vector-向量2,deque-双端队列3,list-双向链表4,forward_list-单链表(C++11)5,queue-队列(适配器),6,priority_queue-优先队列7,stack-栈8,array-数组类(非STL容器)1,vector-向量vector模板类是最简单的序列类型,除非其他类型的特殊优点能更好地满足需求,否则应默认使用vector。自动内存管理随机访问元素在尾部插入或删除元素,固定时间–O(1)在头部插入和删除元素,线性时间—O(n)可反原创 2020-10-30 18:24:22 · 1066 阅读 · 0 评论