摘要:
# 28.STL中slist的实现 ## 1.链表结构 ```C++ typedef struct _LinkNode { int data; //结点的数据域 struct _LinkNode* next; //结点的指针域 }LinkNode, LinkList; //LinkList 为指向结 阅读全文
摘要:
# 27.STL中vector的实现 作者建议还是稍微看一下底层机制,vector主要有三个指针(迭代器) 来表示的: ●\_Myfirst 和 \_Mylast 可以用来表示 vector 容器中目前已被使用的内存空间; ●\_Mylast 和 \_Myend 可以用来表示 vector 容器目前 阅读全文
摘要:
# 26.STL中迭代器失效的情况有哪些? ## 1.STL之vector迭代器失效 `std::vector`是一个动态数组,当其大小或容量发生改变时,其内存可能被重新分配,从而导致已经存在的迭代器失效。以下是几种可能导致迭代器失效的情况: 1.**插入或添加元素**:使用`push_back`或 阅读全文
摘要:
# 25.说一下STL每种容器对应的迭代器 | **容器** | **迭代器** | | | | | vector、deque | 随机访问迭代器 | | stack、queue、priority_queue | 无 | | list、(multi)set/map | 双向迭代器 | | unord 阅读全文
摘要:
# 24.vector的增加删除都是怎么做的?为什么是1.5或者是2倍? size()函数返回的是已用空间大小,capacity()返回的是总空间大小,capacity()-size()则是剩余的可用空间大小。当size()和capacity()相等,说明vector目前的空间已被用完,如果再添加新 阅读全文
摘要:
# 23.常见容器性质总结? C++ STL(Standard Template Library)提供了多种容器,用于存储和操作各种类型的数据。以下是一些常见容器的特性总结: 1.**std::vector**:动态数组,能高效地在末尾进行插入和删除操作,能直接访问任何元素。但在中间位置进行插入或删 阅读全文
摘要:
# 22.STL中hash table扩容发生什么? 在 C++ STL 中,`std::unordered_map` 和 `std::unordered_set` 是两个使用哈希表 (hash table) 作为其底层实现的容器。 当哈希表的元素数量增长到某个阈值时,就需要进行扩容。这个阈值通常是 阅读全文
摘要:
# 21.STL中的allocator、deallocator 阅读全文