vector stl

vector | push_back()的时间复杂度

## `std::vector.push_back()` 使用push_back()函数时,在不用扩增容量的情况下,时间复杂度是O(1); 但如果需要扩增容量,会将旧vector中所有元素复制到新的内存空间中,时间复杂度是O(n)。 假定扩增后的容量为原来的m倍 假如从一个空vevtor开始,需要插 ......
复杂度 push_back 时间 vector push

【ACM专项练习#02】输入整行字符串、输入值到vector、取输入整数的每一位

### 输入整行字符串 #### 平均绩点 ##### 题目描述 每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。 ##### 输入 有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。 #### ......
整数 字符串 专项 字符 vector

vector<int> locationVec; locationVec[i] 和 locationVec.at(i) 的区别

在C++中,vector<int>是一个动态数组,可以存储整数类型的元素。locationVec是一个vector<int>类型的对象。 locationVec.at(i)和locationVec[i]都用于访问locationVec中的元素,但它们有一些区别。 locationVec.at(i): ......
locationVec vector int lt gt

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

24.vector的增加删除都是怎么做的?为什么是1.5或者是2倍?

# 24.vector的增加删除都是怎么做的?为什么是1.5或者是2倍? size()函数返回的是已用空间大小,capacity()返回的是总空间大小,capacity()-size()则是剩余的可用空间大小。当size()和capacity()相等,说明vector目前的空间已被用完,如果再添加新 ......
vector 1.5 24

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

18.vector越界访问下标,map越界访问下标?vector删除元素时会不会释放空间?

# 18.vector越界访问下标,map越界访问下标?vector删除元素时会不会释放空间? ## 1.vector越界访问下标 `std::vector`是C++标准库中的一种动态数组,其大小可以根据需要进行调整。当你试图访问一个不存在的元素,即访问超出其当前大小范围的索引时,将会发生越界访问。 ......
下标 vector 元素 空间 map

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

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

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

11.Vector如何释放空间?

# 11.Vector如何释放空间? 由于vector的内存占用空间只增不减,比如你首先分配了10000个字节,然后erase掉后面9999个,留下一个有效元素,但是内存占用仍为10000个。所有内存空间是在vector析构时候才能被系统回收。empty()用来检测容器是否为空的,clear()可以 ......
Vector 空间 11

13.STL迭代器如何实现

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

9.vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素

# 9.vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素 1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的 ......
vector list 元素

8.STL的两级空间配置器

# 8.STL的两级空间配置器 ## 为什么有适配器? (1)小块内存带来的内存碎片问题 单从分配的角度来看。由于频繁分配、释放小块内存容易在堆中造成外碎片(极端情况下就是堆中空闲的内存总量满足一个请求,但是这些空闲的块都不连续,导致任何一个单独的空闲的块都无法满足这个请求)。 (2)小块内存频繁申 ......
空间 STL

6.STL中hashtable的实现?

6.STL中hashtable的实现? STL中的hashtable使用的是开链法解决hash冲突问题,如下图所示。 hashtable中的bucket所维护的list既不是list也不是slist,而是其自己定义的由hashtable_node数据结构组成的linked-list,而bucket聚 ......
hashtable STL

1.什么是STL?

# 1.什么是STL? C++STL从广义来讲包括了三类:算法,容器和迭代器。 - 算法包括排序,复制等常用算法,以及不同容器特定的算法。 - 容器就是数据的存放形式,包括顺序容器和关联式容器,顺序式容器就是list,vector等,关联式容器就是set,map等。 - 在C++中,迭代器是一种用于 ......
STL

C++STL

assert()函数 max_element()和min_element() 时间复杂度O(n) 作用:求C++数组或vector求最大值最小值,二者返回的都是迭代器或指针,可以通过*符号来获得值 max_element()和min_element()函数是一样的用法,这里要注意的是如果有多个最大值 ......
STL

linux gdb 调试STL

1.进入网站:https://sourceware.org/gdb/wiki/STLSupport,下载STL Surport Tool 2.将stl_views_1.0.3.gdb放到linux任意路径下,如/data/ 3.进入gdb调试模式,输入source /data/stl_views_1 ......
linux gdb STL