STL_deque
概述 vector是单向开口的连续线性空间,而deque则是一种双向开口的连续线性空间。 所谓双向开口,是指可以在头尾两端分别做元素的插入和删除操作。 区别 和vector相比: deque运行常数时间内对起头端进行元素的插入和移除操作 deque没有所谓的容量的概念,因为他是动...
概述 vector是单向开口的连续线性空间,而deque则是一种双向开口的连续线性空间。 所谓双向开口,是指可以在头尾两端分别做元素的插入和删除操作。 区别 和vector相比: deque运行常数时间内对起头端进行元素的插入和移除操作 deque没有所谓的容量的概念,因为他是动...
空类大小 空类对象在内存中是有起始地址的,也就是说最少能存一个字节。所以一个空类的大小是1。 this指针调整 如果派生类继承自多个基类,那么派生类对象的开始地址和第一个基类子对象的开始地址是相同的。 调用派生类的成员函数的时候,会根据这个函数属于哪个基类,对this指针进行调整...
多态 概述 多态性(Polymorphism)是面向对象编程的一个核心概念,它允许同一个接口调用在不同对象上执行不同的操作 在C++中,多态性主要通过继承和虚函数实现 多态性使代码更具灵活性和可扩展性 因为你可以编写更通用的代码,依赖于抽象基类而不是具体的派生类 多态的类型 编译...
关于圆角 没有子窗口 如果SOUI的宿主窗口没有包含子窗口,直接使用窗口的半透明属性:translucent=1就可以解决了,整个窗口形状完全由背景图决定,可以实现完美的圆角。 有子窗口 窗口半透明时,窗口中的子窗口(非SWindow)就不能正常显示,所以有时候不得不使用tran...
导出SOUI对象到Lua 为了在SOUI中使用lua,需要使用lua内核实现一个SOUI::IScriptModuler接口。 导出SOUI对象通常应该在IScriptModule的实现类的构造中执行 在lua中使用 事件分发处理 在MFC中,一个类要处理消息,这个类通常派生自C...
线程池 创建线程池方法一 调用async_factory_impl::create创建线程池 但是这个函数实际作用是用于创建一个记录器 由于需要一个线程池对象参数,所以在创建记录器之前做了个检查,如果还不存在线程池,就先创建线程池,再构造记录器 这里使用递归锁的原因可能是为了使代...
语言特性 指定初始化 按名称初始化结构体成员,提高可读性 [[likely]]和[[unlikely]] 提示编译器分支预测优化 标准库新增组件 std::atomic_ref(原子引用) 概述 C++20 引入的模板类,允许对 非原子类型 的对象进行原子操作 它的核心作用是为现...
概述 首先,stack是一个容器适配器 理论上,任何提供了 push_back(), pop_back(), back()等操作的序列容器都可以作为 stack的底层容器 为什么默认是deque deque之所以成为默认选择,是因为它在以下几个方面取得了最佳平衡: 相对于vect...
概述 涉及初始化顺序的目标包括 静态成员变量 全局成员变量 类的成员变量 静态成员变量和全局成员变量 概述 静态成员变量 包括全局静态成员 也包括类的静态成员 顺序结论 全局变量 和 静态成员变量 在程序启动时初始化,具体顺序是以 编译单元 为单位 不同编译单元中的变量初始化顺序...
进程内存空间布局 当运行一个可执行文件时,操作系统就会把这个可执行文件加载到内存中,此时进程就会有一个虚拟的地址空间(内存空间)。 BSS存放未初始化或者初始化为0的全局变量。 Linux下,可以通过nm列出可执行文件中的全局变量的地址。 全局变量以及全局的函数在编译时就已经分配...
搜索当前标签