
C++ STL
文章平均质量分 84
小小波~
这个作者很懒,什么都没留下…
展开
-
deque的介绍
当需要在容器的两端添加或删除元素时,deque只需要操作与该端相邻的内存块,而不需要改变整个序列的内存布局,因此它的效率相对较高。当vector的大小增加时,它会尝试在内存中分配更多的连续空间来存储新的元素,如果当前内存块不足以容纳新的元素,则需要重新分配更大的内存块,并将原有元素复制到新的内存块中去,这是一个比较耗时的操作。2.deque的最大任务,便是在这些分块的固定大小的连续空间上,维护其整体的连续的假象,并提供随机存取的接口( 随机迭代器),代价则是迭代器架构较为复杂。原创 2023-06-14 21:34:35 · 551 阅读 · 0 评论 -
List的介绍
1.list是序列容器,允许在序列中的任何位置执行固定的O(1)时间的插入和删除操作,并在两个方向上进行迭代。2.list容器使用双链表实现:双链表将每个元素存储在不同位置,每个结点通过next,prev指针链接成顺序表。3.list与其他序列容器相比(array,vector和deque),list在容器内任何位置插入,提取和移动元素(已经获得迭代器的情况下时间渐进复杂度为O(1))原创 2023-06-14 16:35:28 · 1010 阅读 · 0 评论 -
VECTOR
容器中进行对象的构造和析构1,内存开辟和释放,都是通过容器的空间配置器allocator(负责内存开辟)和deallocator(负责内存释放),construct(对象构造),destory(对象析构)。需要注意的是reserve()函数给vector预分配储存大小,但没有给这段内存初始化,导致vector可以利用这段存储空间,但并不能有效访问这些空间,如果访问就会出现越界现象,导致程序奔溃。在初始化后迭代器还能使用,,再push_back()后空间扩容,之前的对象会被析构掉,迭代器失效。原创 2023-06-12 17:51:38 · 121 阅读 · 1 评论 -
C++STL
修改算法:copy、copy_if、copy_n、fill、fill_n、generate、generate_n、replace、replace_if、remove、remove_if、unique等。1.输入迭代器(Input Iterator):支持单向迭代,只能读取,不能修改,每个元素只能被遍历 一次。查找算法:find、find_if、count、count_if、binary_search、lower_bound、upper_bound、equal_range等。原创 2023-06-11 20:43:35 · 104 阅读 · 1 评论