06 2018 档案

摘要:单例模式是最常用的设计模式之一,属于创建型设计模式,它的核心目标是:确保一个类在整个程序生命周期中只有一个实例,并提供一个全局访问点。 核心意图 - 控制实例数量:防止一个类被多次实例化。 - 提供全局访问:让任何地方都能方便地访问这个唯一的实例。 - 节省资源:对于重量级对象(如数据库连接、配置管 阅读全文
posted @ 2018-06-25 15:03 osbreak 阅读(165) 评论(0) 推荐(0)
摘要:thread_specific_ptr代表了一个全局的变量,而在每个线程中都各自new一个线程本地的对象交给它进行管理。 线程之间就不会因为访问同一全局对象而引起资源竞争导致性能下降。 而线程结束时,这个资源会被自动释放。 #include <boost/thread/thread.hpp> #in 阅读全文
posted @ 2018-06-22 17:09 osbreak 阅读(2555) 评论(0) 推荐(0)
摘要:C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。 C++11中,官方似乎一直鼓励大家用lambda表达式,而不是函数对象,lambda表达式更易于使用和理解。 lambda表达式的语法如下: [capture_block](parameters) exceptions 阅读全文
posted @ 2018-06-22 11:20 osbreak 阅读(339) 评论(0) 推荐(0)
摘要:一、模块基类 1.01 QApplication / QGuiApplication / QCoreApplication - QApplication:适用于含有窗口系统的GUI应用 - QGuiApplication支持更底层的GUI功能但不依赖于特定的窗口系统, - QCoreApplicat 阅读全文
posted @ 2018-06-22 10:44 osbreak 阅读(175) 评论(0) 推荐(0)
摘要:1.菜单 1.01 菜单栏 // 注册目录测试函数 ON_COMMAND(ID_INSERT_MENU, OnMenuTest) void CMainFrame::OnMenuTest() { //获得主菜单 CMenu* pMenu = GetMenu(); //获得子菜单 CMenu* pSub 阅读全文
posted @ 2018-06-21 16:52 osbreak 阅读(475) 评论(0) 推荐(0)
摘要:https://learn.microsoft.com/zh-cn/cpp/?view=msvc-170 1.窗口 1.01 获得当前窗口的句柄 //获得当前窗口的句柄 HWND hWnd = GetSafeHwnd(); //通过HWND获得CWnd指针 CWnd* pWnd = CWnd::Fr 阅读全文
posted @ 2018-06-21 16:50 osbreak 阅读(216) 评论(0) 推荐(0)
摘要:pugixml pugixml比tinyxml快不止一个数量级 pugixml 可以在github上直接下载到源码 https://github.com/zeux/pugixml 包括两个头文件(pugixml.hpp pugiconfig.hpp) 和 一个源文件(pugixml.cpp) <?x 阅读全文
posted @ 2018-06-21 16:36 osbreak 阅读(686) 评论(0) 推荐(0)
摘要:1. std::shared_ptr: 一个共享所有权的智能指针, 多个 shared_ptr 可以共享同一个对象。 C++11 引入的智能指针之一,属于内存管理机制的核心工具。它通过引用计数(Reference Counting)实现对动态分配对象的自动内存管理,避免内存泄漏。 线程安全: sha 阅读全文
posted @ 2018-06-21 15:01 osbreak 阅读(943) 评论(0) 推荐(0)
摘要:c++ 11特性 1.01 关键字 auto : 自动存储变量的关键字, 必须要对auto声明的类型进行初始化,否则编译器无法推导出auto的实际类型。 decltype : 根据表达式的实际类型推演出定义变量时所用的类型。如cout << typeid(i).name() << endl; fin 阅读全文
posted @ 2018-06-21 14:07 osbreak 阅读(251) 评论(0) 推荐(0)
摘要:字符转码 1.01 UTF8ToUnicode std::wstring UTF8ToUnicode(const std::string& utf8string) { int widesize = ::MultiByteToWideChar(CP_UTF8, 0, utf8string.c_str( 阅读全文
posted @ 2018-06-21 11:06 osbreak 阅读(509) 评论(0) 推荐(0)
摘要:std::multiset 是 C++ 标准模板库(STL)中的一个关联容器,它是 std::set 的变体,其核心特性是允许元素重复。同一个值可以出现多次,但所有元素仍然保持有序。 允许重复元素: - 与 std::set 的唯一性不同,std::multiset 允许插入相同的值多次。 - 这是 阅读全文
posted @ 2018-06-21 10:22 osbreak 阅读(461) 评论(0) 推荐(0)
摘要:std::multimap 是 C++ 标准模板库(STL)中的一个关联容器,它是 std::map 的变体,其核心特性是允许键(key)重复。 键值对存储: - 和 std::map 一样,每个元素是一个 std::pair<const Key, T>。 - 键不是唯一的,允许多个元素拥有相同的键 阅读全文
posted @ 2018-06-20 23:28 osbreak 阅读(729) 评论(0) 推荐(0)
摘要:构造函数 deque<Elem> c 创建一个空的deque deque<Elem> c1(c2) 复制一个deque。 deque<Elem> c(n) 创建一个deque,含有n个数据,数据均已缺省构造产生。 deque<Elem> c(n, elem) 创建一个含有n个elem拷贝的deque 阅读全文
posted @ 2018-06-20 23:17 osbreak 阅读(564) 评论(0) 推荐(0)
摘要:std::map 是 C++ 标准模板库(STL)中的一个关联容器,它存储键值对(key-value pairs),并根据键(key)自动排序。 键值对存储: - 每个元素是一个 std::pair<const Key, T>,其中 Key 是键的类型,T 是值的类型。 - 键是 const 的,一 阅读全文
posted @ 2018-06-20 23:10 osbreak 阅读(396) 评论(0) 推荐(0)
摘要:std::list 是 C++ 标准模板库(STL)中的一个序列容器,它实现了双向链表(Doubly-Linked List)。 与 std::vector 的连续存储不同,std::list 中的元素在内存中是分散的,通过指针相互连接。这种结构决定了它的独特性能特征。 双向链表: - 每个元素(节 阅读全文
posted @ 2018-06-20 22:57 osbreak 阅读(894) 评论(0) 推荐(0)
摘要:std::vector 是 C++ 标准模板库(STL)中最常用、最重要的序列容器之一。它是一个动态数组(Dynamic Array),能够自动管理内存,在需要时自动增长或缩小其存储空间。 动态大小:大小可以在运行时动态改变。当插入元素导致容量不足时,vector 会自动分配一块更大的内存,将旧数据 阅读全文
posted @ 2018-06-20 22:50 osbreak 阅读(325) 评论(0) 推荐(0)
摘要:set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构。 唯一性:每个元素都是唯一的。如果你尝试插入一个已经存在的值,插入操作将失败(或被忽略),容器的大小不会改变。 有序性:内部使用平衡二叉搜索树(通常是红黑树)来实现。因此,元素会根据其值自动排序。默认情况下,元素 阅读全文
posted @ 2018-06-20 22:38 osbreak 阅读(785) 评论(0) 推荐(0)
摘要:boost中有一些分散的单例实现,能够独立摘出来用的主要有以下四个:尤其以前两个为主。 boost/container/detail/singleton.hpp boost/serialization/singleton.hpp boost/thread/detail/singleton.hpp b 阅读全文
posted @ 2018-06-20 21:57 osbreak 阅读(1509) 评论(0) 推荐(0)
摘要:同步TCP通信服务端 #include <boost/asio.hpp> #include <iostream> using namespace boost::asio; int main() { try { io_service io; ip::tcp::endpoint ep(ip::tcp:: 阅读全文
posted @ 2018-06-20 21:51 osbreak 阅读(217) 评论(0) 推荐(0)
摘要:Boost.Asio是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型。 头文件: #include <boost/asio.hpp> 名空间: using namespace boost::asio; ASIO库能够使用TCP、UDP、ICMP、串口来发送/接 阅读全文
posted @ 2018-06-20 21:36 osbreak 阅读(1331) 评论(0) 推荐(0)