上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 48 下一页
摘要: 6.STL中hashtable的实现? STL中的hashtable使用的是开链法解决hash冲突问题,如下图所示。 hashtable中的bucket所维护的list既不是list也不是slist,而是其自己定义的由hashtable_node数据结构组成的linked-list,而bucket聚 阅读全文
posted @ 2023-08-02 22:22 CodeMagicianT 阅读(91) 评论(0) 推荐(0)
摘要: # 5.说一下C++左值引用和右值引用 C++11正是通过引入右值引用来优化性能,具体来说是通过移动语义来避免无谓拷贝的问题,通过move语义来将临时生成的左值中的资源无代价的转移到另外一个对象中去,通过完美转发来解决不能按照参数实际类型来转发的问题(同时,完美转发获得的一个好处是可以实现移动语义) 阅读全文
posted @ 2023-08-02 22:20 CodeMagicianT 阅读(527) 评论(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 阅读(80) 评论(0) 推荐(0)
摘要: # 2.解释一下什么是trivial destructor 什么是 trivial destructor和 non-trivial destructor 如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如 阅读全文
posted @ 2023-08-02 22:17 CodeMagicianT 阅读(286) 评论(0) 推荐(0)
摘要: # 1.什么是STL? C++STL从广义来讲包括了三类:算法,容器和迭代器。 - 算法包括排序,复制等常用算法,以及不同容器特定的算法。 - 容器就是数据的存放形式,包括顺序容器和关联式容器,顺序式容器就是list,vector等,关联式容器就是set,map等。 - 在C++中,迭代器是一种用于 阅读全文
posted @ 2023-08-02 22:16 CodeMagicianT 阅读(268) 评论(0) 推荐(0)
摘要: # 10.智能指针出现循环引用怎么解决? 弱指针用于专门解决shared_ptr循环引用的问题,weak_ptr不会修改引用计数,即其存在与否并不影响对象的引用计数器。循环引用就是:两个对象互相使用一个shared_ptr成员变量指向对方。弱引用并不对对象的内存进行管理,在功能上类似于普通指针,然而 阅读全文
posted @ 2023-08-02 22:16 CodeMagicianT 阅读(83) 评论(0) 推荐(0)
摘要: # 9.手写实现智能指针类需要实现哪些函数? ==1.智能指针是一个数据类型,一般用模板实现,模拟指针行为的同时还提供自动垃圾回收机制。它会自动记录SmartPointer对象的引用计数,一旦T类型对象的引用计数为0,就释放该对象。== 除了指针对象外,我们还需要一个引用计数的指针设定对象的值,并将 阅读全文
posted @ 2023-08-02 22:15 CodeMagicianT 阅读(268) 评论(0) 推荐(0)
摘要: # 8.智能指针的循环引用 循环引用是指使用多个智能指针share_ptr时,出现了指针之间相互指向,从而形成环的情况,有点类似于死锁的情况,这种情况下,智能指针往往不能正常调用对象的析构函数,从而造成内存泄漏。举个例子: ```C++ #include using namespace std; t 阅读全文
posted @ 2023-08-02 22:15 CodeMagicianT 阅读(231) 评论(0) 推荐(0)
摘要: # 7.说说你了解的auto_ptr作用 1.auto_ptr的出现,主要是为了解决“有异常抛出时发生内存泄漏”的问题;抛出异常,将导致指针p所指向的空间得不到释放而导致内存泄漏; 2.auto_ptr构造时取得某个对象的控制权,在析构时释放该对象。我们实际上是创建一个auto_ptr\类型的局部对 阅读全文
posted @ 2023-08-02 22:15 CodeMagicianT 阅读(51) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 48 下一页