![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
容器
文章平均质量分 96
c++容器
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
-
C++中的字符串比较——字符数组、字符串(类)、字符指针
字符串比较正如在C++中可以用3种方法(字符数组、字符串(类)、字符指针)访问一个字符串,比较字符串(内容)自然也有这三种基本形式。废话不多说,上代码,一看便知#include <iostream>#include <string.h>using namespace std;int main(){ char str1[] = "abc"; c...原创 2019-08-04 20:31:00 · 9139 阅读 · 1 评论 -
map、hash_map、unordered_map
基本定义map底层是用红黑树实现的,查找时间复杂度是O(log(n));hash_map底层是用hash表存储的,查询时间复杂度是O(1);unordered_map和hash_map基本一样,只是unordered_map已经加到C++11标准(编译时添加编译选项:–std=c++11),而hash_map未加入在C++11标准中。由于map使用红黑树实现,所以是有序存储的,因此map的...原创 2019-08-29 20:53:12 · 347 阅读 · 0 评论 -
c++STL vector扩容过程
扩容底层数据结构是一个动态数组。 默认构造的方式是0, 之后插入按照1 2 4 8 16 二倍扩容。GCC是二倍扩容,VS13是1.5倍扩容。扩容后是一片新的内存,需要把旧内存空间中的所有元素都拷贝进新内存空间中去,之后再在新内存空间中的原数据的后面继续进行插入构造新元素,并且同时释放旧内存空间,并且,由于vector 空间的重新配置,导致旧vector的所有迭代器都失效了。vector...原创 2019-08-01 20:47:41 · 9454 阅读 · 1 评论 -
STL总结
一.STL有哪些组件?STL提供六大组件彼此此可以组合套用:1、容器容器就是各种数据结构,从实现角度看,STL容器是一种class template。2、算法各种常见算法,如sort,search,copy,erase等,我觉得其中比较值得学习的就是sort,next_permutation,partition,merge sort,从实现角度看,STL算法是一种function tem......原创 2019-07-23 23:48:59 · 297 阅读 · 0 评论 -
stl的sort函数原理
STL中的sort并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法。当数据量较大时采用快速排序,分段递归;如果递归层次过深,有出现最坏情况的倾向,还会改用堆排序;一旦分段后的数据量小于某个阀值,为避免递归调用带来过大的额外负荷,便会改用插入排序。阈值(threshold)从效率的角度来看,当元素数量很少的...原创 2019-07-23 23:33:15 · 382 阅读 · 0 评论 -
vector,array和数组的区别
相同点:三者均可以使用下表运算符对元素进行操作,即vector和array都针对下标运算符[]进行了重载三者在内存的方面都使用连续内存,即在vector和array的底层存储结构均使用数组不同点:vector属于变长容器,即可以根据数据的插入删除重新构建容器容量(1.5倍或者2倍);但array和数组属于定长容量。vector和array提供了更好的数据访问机制,即可...原创 2019-07-23 23:19:22 · 8500 阅读 · 0 评论