![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
文章平均质量分 81
小太阳....
这个作者很懒,什么都没留下…
展开
-
STL--AVLTree、RBTree介绍和插入的模拟实现
一、平衡二叉搜索树对于map/multimap/set/multiset 这几个容器的共同点是:其底层都是按照二叉搜索树来实现的。但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉树搜索树就会退化成单支树,时间复杂度会退化成O(N),因此map/set等关联式容器的底层结构是对二叉树进行了平衡,即采用二叉平衡搜索树来实现的。二、AVLTree二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗原创 2021-06-07 10:17:40 · 348 阅读 · 3 评论 -
STL--priority_queue(介绍以及使用和模拟实现)
一、priority_queue的使用template <class T, class Container = vector<T>,class Compare = less<typename Container::value_type> > class priority_queue;优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆的算法将vector的元素构成了堆的结构,所有需要用到堆的位置,都可以考虑使用priority_qu原创 2021-05-03 15:46:29 · 204 阅读 · 1 评论 -
STL--deque、stack、queue
一、deque介绍deque(双端队列):是一种双开口的“连续”空间的数据结构。双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不必搬动数据;与list相比,空间利用比较高。deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组,其底层结构如下图:deque采用一块所谓的map(注意:不是STL的map容器)作为主控,这里的map是一小块连续空间,其中每个元素都是一个指针,指向另一段(原创 2021-05-01 16:39:01 · 2240 阅读 · 4 评论 -
STL--vector容器介绍和使用以及迭代器失效问题
一、vector的介绍1、vector是表示可变大小的序列容器。2、就像数组一样,vector也采用的连续存储空间来存储元素。也就意味着可以采用下标对vector的元素进行访问和数组一样高效。但是又不像数组,它的大小可以动态改变的,而且它的大小会被容器自动处理。3、本质讲,vector使用动态分配数组来存储它的元素。当新元素插入的时候,为了增加存储空间这个数组需要被重新分配。其做法是分配新的数组,然后将全部元素移到新的数组中。就时间而言,这是一个相对代价较高的任务,但是vector并不会每次都重新分配原创 2021-04-28 17:20:11 · 304 阅读 · 1 评论 -
STL--vector模拟实现
一、前言在另一篇博客中我已经写了:vector容器介绍和使用以及迭代器失效问题,那么在这篇博客中我将要模拟实现一个简单的vector,对vector实现基本的增、删、改。下图是vector的基本结构:二、vector的成员、构造、析构、迭代器的基本实现#pragma once#include<iostream>#include<assert.h>namespace Myvector{ template<class T> class vector {原创 2021-04-28 17:19:37 · 525 阅读 · 3 评论 -
STL--list(结构介绍、常用接口、模拟实现)
list的使用和介绍list的介绍原创 2021-04-17 17:48:24 · 296 阅读 · 0 评论