STL

4.1 C++ STL 动态链表容器

List和SList都是C++ STL中的容器,都是基于双向链表实现的,可以存储可重复元素的特点。其中,List内部的节点结构包含两个指针一个指向前一个节点,一个指向后一个节点,而SList只有一个指针指向后一个节点,因此相对来说更节省存储空间,但不支持反向遍历,同时也没有List的排序功能。双向链... ......
容器 动态 4.1 STL

2.1 C++ STL 数组向量容器

Vector容器是C++ STL中的一个动态数组容器,可以在运行时动态地增加或减少其大小,存储相同数据类型的元素,提供了快速的随机访问和在末尾插入或删除元素的功能。该容器可以方便、灵活地代替数组,容器可以实现动态对数组扩容删除等各种复杂操作,其时间复杂度`O(l)常数阶`,其他元素的插入和删除为`O... ......
向量 数组 容器 2.1 STL

3.1 C++ STL 双向队列容器

双向队列容器(Deque)是C++ STL中的一种数据结构,是一种双端队列,允许在容器的两端进行快速插入和删除操作,可以看作是一种动态数组的扩展,支持随机访问,同时提供了高效的在队列头尾插入和删除元素的操作。 Deque 双向队列容器与Vector非常相似,它不但可以在数组尾部插入和删除元素,还可以 ......
队列 双向 容器 3.1 STL

1.1 C++ STL 字符串构造函数

String 字符串操作容器是C++标准中实现的重要容器,其主要用于对字符串的高效处理,它和C风格中的`string.h`并不是同一个库,两个库有极大的差距,C库中的`string.h`主要面向过程提供一些处理函数,而C++库中的`string`则是基于类实现的更高效的一种字符串处理方法集,类中提供... ......
字符串 函数 字符 1.1 STL

C++ STL iota 使用方法

# C++ STL iota用法 ## 介绍 c++ 11 引入的函数,C++20后小更新 使用 **#include\** 头文件引用 功能 [std::iota](http://https://en.cppreference.com/w/cpp/algorithm/iota "std::iota ......
使用方法 方法 iota STL

C++ STL 容器简介

1、总述 C++ STL(Standard Template Library)是 C++ 标准库的一部分,包括了许多数据结构的实现,提供了许多好用的轮子,同时,其设计思想也非常值得学习。其中,容器是 STL 中最重要的一部分,它是一种高效的数据存储和管理方式,能够方便地处理不同类型的数据,并提供许多 ......
容器 简介 STL

C++STL库 二分查找,以及对set集合进行二分查找,来源于”leetcode7022. 限制条件下元素之间的最小绝对差“

C++的头文件<algorithm>中有用于二分查找的函数,lower_bound()、upper_bound()以及binary_search(): lower_bound():返回大于等于目标值的第一个位置upper_bound():返回大于目标值的第一个位置,binary_search():若 ......
leetcode 元素 条件 之间 来源

C++系列二:STL教程-迭代器

[TOC](STL教程-迭代器) # 前言 ……。 # 迭代器 ```csharp //它可以是需要的任意类型,通过迭代器可以指向容器中的某个元素,如果需要,还可以对该元素进行读/写操作。 常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器 5 种。输入迭代器和 ......
教程 STL

C++系列二:STL教程-容器+迭代器

[TOC](STL教程-容器+迭代器) # 前言 ……。 # 容器 ```cpp //容器种类 功能 1. 序列容器 主要包括 vector 、list 、deque。 元素在容器中的位置同元素的值无关,即容器不是排序的。将元素插入容器时,指定在什么位置,元素就会位于什么位置。 2. 排序容器 包括 ......
容器 教程 STL

C++系列二:STL教程-介绍+小记

[TOC](STL介绍+小记) # 前言 ……。 # 一、STL介绍 1. STL=>标准模版库 2. STL 是一些容器、算法和其他一些组件的集合; 3. STL组成(三类):algorithm(算法)、container(容器)和 iterator(迭代器) 4. 13 个头文件: ```csh ......
小记 教程 STL

C++系列二:STL教程-常用算法

 [TOC](常用算法) # 前言 还有一些我在尝试中迷惑不解的,有点玄幻。 # 算法列举: 1. 排序算法: ```cpp sort(first, last); stable_sort(first, last); partial_sort(first, middle, last); partia ......
算法 常用 教程 STL

C++STL 学习笔记

# C++STL 学习笔记 ## STL补充 ### List 链表 - ` list mylist = { }`链表定义和初始化 - `void push_front(const T & val) ` 将 val 插入链表最前面 - `void pop_front() ` 删除链表最前面的元素 - ......
笔记 STL

C++ STL

### 1.初始 * 头文件 c++标准库不包括.h,#include;c旧库需要包括.h,#include;c新库在旧库前面加c,不需要包含.h,#include。 旧头文件不被封装在std命名空间中。 * 网站资源 www.cplusplus.com cppreference.com gcc.g ......
STL

常用c++ STL 汇总

- ### 常用STL: - #### **vector** - 变长数组,倍增的思想 - 初始化: ```c++ //初始化 vector a; vector a(n); vector a[n]; vector a(n, 0);//长度为n,值为0 ``` - 操作: ```c++ size() ......
常用 STL

32.STL中的heap的实现

# 32.STL中的heap的实现 版本1: ## 1.堆的原理 堆(Heap)是一种数据结构,通常用于实现优先队列。堆是一种树形结构,通常由一个完全二叉树构成,因此它只有两个指针,即左子节点和右子节点。堆有两种类型:最大堆(Max Heap)和最小堆(Min Heap)。在最大堆中,父节点的值大于 ......
heap STL 32

34.STL中set的实现?

# 34.STL中set的实现? STL中的容器可分为序列式容器(sequence)和关联式容器(associative),set属于关联式容器。 set的特性是,所有元素都会根据元素的值自动被排序(默认升序),set元素的键值就是实值,实值就是键值,set不允许有两个相同的键值 set不允许迭代器 ......
STL set 34

33.STL中的priority_queue的实现

# 33.STL中的priority_queue的实现 ## 1.priority_queue的介绍 1.优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 2.此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素 (优先队列中位于顶部的元素)。 ......
priority_queue priority queue STL 33

30.STL中的deque的实现

# 30.STL中的deque的实现 ## 1.deque简介 双端队列deque,与vector的最大差异在于: 1.deque运行常数时间对头端或尾端进行元素的插入和删除操作 2.deque没有所谓的容器概念,因为它是动态地以分段连续空间组合而成随时可以增加一块新的内存空间并拼接起来 虽然deq ......
deque STL 30

31.STL中stack和queue的实现

# 31.STL中stack和queue的实现 ## 1.STL中stack ### 1.栈的概念 栈(Stack)是一种数据结构,它遵循后进先出(Last-In-First-Out,LIFO)的原则,也就是说,最后进入栈的元素最先被取出。栈是一种线性数据结构,它由多个元素组成,每个元素被称为栈项( ......
stack queue STL 31

29.STL中list的实现

# 29.STL中list的实现 ## 1.顺序表 ### 1.顺序表的定义 - 顺序表是用一段**物理地址连续的存储单元**依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 - 顺序表:**可动态增长的数组,要求数据是连续存储的** ```C++ typedef s ......
list STL 29

28.STL中slist的实现

# 28.STL中slist的实现 ## 1.链表结构 ```C++ typedef struct _LinkNode { int data; //结点的数据域 struct _LinkNode* next; //结点的指针域 }LinkNode, LinkList; //LinkList 为指向结 ......
slist STL 28

27.STL中vector的实现

# 27.STL中vector的实现 作者建议还是稍微看一下底层机制,vector主要有三个指针(迭代器) 来表示的: ●\_Myfirst 和 \_Mylast 可以用来表示 vector 容器中目前已被使用的内存空间; ●\_Mylast 和 \_Myend 可以用来表示 vector 容器目前 ......
vector STL 27

25.说一下STL每种容器对应的迭代器

# 25.说一下STL每种容器对应的迭代器 | **容器** | **迭代器** | | | | | vector、deque | 随机访问迭代器 | | stack、queue、priority_queue | 无 | | list、(multi)set/map | 双向迭代器 | | unord ......
容器 STL 25

26.STL中迭代器失效的情况有哪些?

# 26.STL中迭代器失效的情况有哪些? ## 1.STL之vector迭代器失效 `std::vector`是一个动态数组,当其大小或容量发生改变时,其内存可能被重新分配,从而导致已经存在的迭代器失效。以下是几种可能导致迭代器失效的情况: 1.**插入或添加元素**:使用`push_back`或 ......
情况 STL 26

22.STL中hash table扩容发生什么?

# 22.STL中hash table扩容发生什么? 在 C++ STL 中,`std::unordered_map` 和 `std::unordered_set` 是两个使用哈希表 (hash table) 作为其底层实现的容器。 当哈希表的元素数量增长到某个阈值时,就需要进行扩容。这个阈值通常是 ......
table hash STL 22

20.STL中list与queue之间的区别

# 20.STL中list与queue之间的区别 `std::list` 和 `std::queue` 是 C++ 标准库中的两个不同容器,它们之间有以下几点区别: 1. 容器类型:`std::list` 是一个双向链表,而 `std::queue` 是一个队列,可以使用多种实现方式(如顺序容器、优 ......
之间 queue list STL 20

15.如何在共享内存上使用STL标准库?

# 15.如何在共享内存上使用STL标准库? 1.想像一下把STL容器,例如map, vector, list等等,放入共享内存中,IPC一旦有了这些强大的通用数据结构做辅助,无疑进程间通信的能力一下子强大了很多。 我们没必要再为共享内存设计其他额外的数据结构,另外,STL的高度可扩展性将为IPC所 ......
内存 标准 STL 15

17.STL中unordered_map(hash_map)和map的区别,hash_map如何解决冲突以及扩容

# 17.STL中unordered_map(hash_map)和map的区别,hash_map如何解决冲突以及扩容 ## 1.区别 ### 1.1需要引入的头文件不同 map: `#include ` unordered_map: `#include ` ### 1.2内部实现机理不同 map: ......
map hash_map hash unordered_map unordered

13.STL迭代器如何实现

# 13.STL迭代器如何实现 1.迭代器是一种抽象的设计理念,通过迭代器可以在不了解容器内部原理的情况下遍历容器,除此之外,STL中迭代器一个最重要的作用就是作为容器与STL算法的粘合剂。 2.迭代器的作用就是提供一个遍历容器内部所有元素的接口,因此迭代器内部必须保存一个与容器相关联的指针,然后重 ......
STL 13

10.STL 中vector删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间?

# 10.STL 中vector删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间? size()函数返回的是已用空间大小,capacity()返回的是总空间大小,capacity()-size()则是剩余的可用空间大小。当size()和capacity()相等,说明vector目前的空间已 ......
元素 vector 空间 STL 10