
STL
Godfiry
这个作者很懒,什么都没留下…
展开
-
STL之map容器的三种插入方式insert emplace emplace_hint那种效率更高
结论C++11新增的emplace() 和 emplace_hint()都比insert效率高原因使用 insert() 向 map 容器中插入键值对的过程是,先创建该键值对,然后再将该键值对复制或者移动到 map 容器中的指定位置;使用 emplace() 或 emplace_hint() 插入键值对的过程是,直接在 map 容器中的指定位置构造该键值对。上代码#include <iostream>#include <map> //map#include原创 2021-03-31 20:15:45 · 4785 阅读 · 0 评论 -
STL之set的使用
简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素set容器的模板定义由于 set 容器存储的各个键值对,其键和值完全相同,也就意味着它们的类型相同,因此 set 容器类模板的定义中,仅有第 1个参数用于设定存储数据的类型。对于 set 类模板中的 3 个参数,后 2 个参数自带默认值,且几乎所有场景中只需使用前 2 个原创 2021-03-31 20:06:46 · 179 阅读 · 0 评论 -
STL之map的使用
map的介绍简介:map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:可以根据key值快速找到value值map和multimap区别:map不允许容器中有重复key值元素 multimap允许容器中有重复key值元素map容器的模板定义后两个设有默认值,大多数场景都不会用到,有些场景可能会涉及到第三原创 2021-03-31 19:22:41 · 169 阅读 · 0 评论 -
STL之list的使用
list容器的使用简述一下list的遍历,初始化,插入和删除,以及list自带的sort和reverse算法代码#include<iostream>#include<list>using namespace std;void printList(const list<int>& L) { for (list<int>::const_iterator it = L.begin(); it != L.end(); it++) {原创 2021-03-31 18:51:06 · 132 阅读 · 0 评论 -
STL之deque的使用
双端队列的一般使用直接上代码#include<iostream>#include<deque>#include<algorithm> sortusing namespace std;void printDeque(const deque<int>& d){ for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) { cout &l原创 2021-03-31 16:25:51 · 128 阅读 · 0 评论 -
STL之vector使用注意点(迭代器失效,clear不回收空间,巧用swap函数)
迭代器失效问题vector容器在插入(发生扩充)和删除的过程中可能会有迭代器失效的问题,我们在使用的时候需要注意这个问题。先了解一下插入的时候为什么迭代器会失效原因在发生扩充的时候,原迭代器指向的还是原来空间的位置上代码/*------------------------------------------------------------------------ *1. *插入时发生扩充,会新开辟一块空间,不一定和原来的空间相同,造成迭代器失效 ---------------原创 2021-03-31 15:49:43 · 560 阅读 · 0 评论 -
STL之vector容器的使用
vector容器的使用这里我做了封装了遍历,初始化,插入,删除函数,遍历接受一个容器的引用,具体看代码。基础使用#include<iostream>#include<vector>using namespace std;//遍历vector容器的几种方法 还有一种是通过增强for循环来使用void printfVector(vector<int> & v){ for (auto i = v.begin(); i < v.end(); i原创 2021-03-31 15:27:00 · 77 阅读 · 0 评论 -
STL之vector容器底层实现
vector在向vector插入元素时,空间够,正常插入,如果空间不足则调用insert_aux辅助函数(不只被push_back调用,在实现时不仅仅满足vector需求)insert_aux的实现保存原来空间的大小,在扩充时以两倍扩充。8->16;finsh = new_start;然后将原来的数据拷贝到新vector,原来的vector销毁(涉及到大量的拷贝构造和析构函数,花费大量的开销)vector iterator概述vector的数据安排及操作方式,与数组非常相似,但数原创 2021-03-31 10:49:45 · 848 阅读 · 0 评论 -
STL之分配器
分配器allocator的实现1. 在vc98中allocaters的实现1.new调用malloc函数2.allocate调用new函数2.在BC5中allocator的使用实现原理3.G++2.9stl1. 对allocator的使用(使用alloc)注意 他有allocator但没有放入标准库里,而是使用了alloc2.alloc的实现原理设计了十六条链表,每一条链表负责某一个固定大小的区块,为什么不建议使用分配器分配器的申请的释放底层实现实现就是malloc和原创 2021-03-31 10:42:31 · 807 阅读 · 0 评论