![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
littleflypig
这个作者很懒,什么都没留下…
展开
-
c++ STL中常见容器的时间复杂度
map, set, multimap, and multiset上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:插入: O(logN)查看:O(logN)删除:O(logN)unordered_map,unordered_set,unordered_multimap, and unordered_multiset上述四种容器采用哈希表实现,不同操作的时...转载 2019-02-28 15:12:18 · 5063 阅读 · 0 评论 -
C++内存问题及智能指针
1.share_ptr引用计数型智能指针作用:解决内存泄露问题,管理共享资源三种初始化方式:make_shared、new初始化(不能赋值)、另一个shared_ptr初始化。2.weak_ptr3. C++内存问题...原创 2019-08-09 19:26:44 · 237 阅读 · 0 评论 -
C++ 内存区域划分
C++内存区域划分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相...原创 2019-03-28 15:59:37 · 344 阅读 · 0 评论 -
c语言struct结构体大小计算
直入主题,要判断一个结构体所占的空间大小,大体来说分三步走:1.先确定实际对齐单位,其由以下三个因素决定 1> CPU周期 WIN vs qt 默认8字节对齐 Linux 32位 默...转载 2019-03-28 14:10:26 · 18827 阅读 · 5 评论 -
c++ 继承中的类作用域
每个类都有自己的作用域,当存在继承关系时,派生类的作用域嵌套在基类作用域之中,名字查找从内部作用域开始一直找到最外层作用域。假设调用p->mem()(或者obj.mem()),则依次执行下面4个步骤:首先确定p或者obj的静态类型。在p或obj对应的静态类型对应的类中查找mem。如果找不到,则依次在其直接基类中不断查找直至继承链的顶层。如果找遍该类以及其基类仍找不到,则编译器报错。...原创 2019-04-06 14:21:51 · 967 阅读 · 0 评论 -
c++成员变量初始化
1.#include <iostream>#include <string>using namespace std;class A{public: int a; string s;};A a;int main() { //A a; cout<<a.a<<endl; cout<<a.s<<endl;}...原创 2019-04-04 11:09:40 · 5848 阅读 · 0 评论 -
C++ noncopyable原理及实现
1.默认构造函数、拷贝控制成员以及它们的合成版本默认构造函数不含参数或者只含一个参数并且参数有默认值的构造函数。如果类没有定义任何构造函数,编译器会为其合成一个无参默认构造函数,也就是合成的默认构造函数。如果类定义了构造函数,编译器不会为其合成默认构造函数,也就不能执行默认初始化了,如:class A { int val; A(int v):val(v) {}};A a; ...原创 2019-03-25 17:06:28 · 9724 阅读 · 0 评论 -
C++ -- 尽可能使用const
常量指针和指针常量如果const出现在星号左边,则表示被指物是常量,如果出现在星号右边,表示指针本身是常量。STL里迭代器的作用就像是T指针,声明迭代器为const就像声明指针为const一样(即T const 指针),表示迭代器不得指向不同的东西,但是它所指向东西的值是可以改变的。如果希望指向东西的值不变,可以使用const_iterator。常量引用常量引用是指指向常量的引用,不能修...原创 2019-03-11 11:14:39 · 157 阅读 · 0 评论 -
STL算法
概述STL算法都被设计用来处理一个或者多个iterator区间,一般第一个区间提供起点和重点,第二个区间提供起点即可。某些STL算法允许调用者传递自定义操作,这些操作可以是普通函数,函数对象,或者lamda表达式。比如,find_if算法允许第三个参数传递一个自定义操作,查找满足此操作(即结果返回true)的那个元素;有比如min_element允许传入第三个参数定义自己的比较规则。分类有...原创 2019-03-09 15:18:52 · 158 阅读 · 0 评论 -
C++ 虚函数原理、问题
1.虚析构函数作用直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发...原创 2019-08-09 19:50:53 · 257 阅读 · 0 评论