摘要:
# 11.Vector如何释放空间? 由于vector的内存占用空间只增不减,比如你首先分配了10000个字节,然后erase掉后面9999个,留下一个有效元素,但是内存占用仍为10000个。所有内存空间是在vector析构时候才能被系统回收。empty()用来检测容器是否为空的,clear()可以 阅读全文
posted @ 2023-08-02 22:43
CodeMagicianT
阅读(331)
评论(0)
推荐(0)
摘要:
# 10.STL 中vector删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间? size()函数返回的是已用空间大小,capacity()返回的是总空间大小,capacity()-size()则是剩余的可用空间大小。当size()和capacity()相等,说明vector目前的空间已 阅读全文
posted @ 2023-08-02 22:42
CodeMagicianT
阅读(240)
评论(0)
推荐(0)
摘要:
# 9.vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素 1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的 阅读全文
posted @ 2023-08-02 22:39
CodeMagicianT
阅读(344)
评论(0)
推荐(0)
摘要:
# 8.STL的两级空间配置器 ## 为什么有适配器? (1)小块内存带来的内存碎片问题 单从分配的角度来看。由于频繁分配、释放小块内存容易在堆中造成外碎片(极端情况下就是堆中空闲的内存总量满足一个请求,但是这些空闲的块都不连续,导致任何一个单独的空闲的块都无法满足这个请求)。 (2)小块内存频繁申 阅读全文
posted @ 2023-08-02 22:27
CodeMagicianT
阅读(165)
评论(0)
推荐(0)
摘要:
# 7.简单说一下traits技法 traits技法利用“内嵌型别“的编程技巧与**编译器的template参数推导功能**,增强C++未能提供的关于型别认证方面的能力。常用的有iterator_traits和type_traits。 **iterator_traits** 被称为**特性萃取机** 阅读全文
posted @ 2023-08-02 22:23
CodeMagicianT
阅读(181)
评论(0)
推荐(0)
摘要:
6.STL中hashtable的实现? STL中的hashtable使用的是开链法解决hash冲突问题,如下图所示。 hashtable中的bucket所维护的list既不是list也不是slist,而是其自己定义的由hashtable_node数据结构组成的linked-list,而bucket聚 阅读全文
posted @ 2023-08-02 22:22
CodeMagicianT
阅读(92)
评论(0)
推荐(0)
摘要:
# 5.说一下C++左值引用和右值引用 C++11正是通过引入右值引用来优化性能,具体来说是通过移动语义来避免无谓拷贝的问题,通过move语义来将临时生成的左值中的资源无代价的转移到另外一个对象中去,通过完美转发来解决不能按照参数实际类型来转发的问题(同时,完美转发获得的一个好处是可以实现移动语义) 阅读全文
posted @ 2023-08-02 22:20
CodeMagicianT
阅读(534)
评论(0)
推荐(0)
摘要:
# 4.迭代器:++it、it++哪个好,为什么 1.前置返回一个引用,后置返回一个对象 ```C++ // ++i实现代码为: int& operator++() { *this += 1; return *this; } ``` 2.前置不会产生临时对象,后置必须产生临时对象,临时对象会导致效率 阅读全文
posted @ 2023-08-02 22:18
CodeMagicianT
阅读(103)
评论(0)
推荐(0)
摘要:
# 3.使用智能指针管理内存资源,RAII是怎么回事? 什么是RAII? RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的 阅读全文
posted @ 2023-08-02 22:17
CodeMagicianT
阅读(81)
评论(0)
推荐(0)
摘要:
# 2.解释一下什么是trivial destructor 什么是 trivial destructor和 non-trivial destructor 如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如 阅读全文
posted @ 2023-08-02 22:17
CodeMagicianT
阅读(288)
评论(0)
推荐(0)

浙公网安备 33010602011771号