06 2018 档案

摘要:动机: 在软件构建过程中,我们需要为某些对象建立一种"通知依赖关系",一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。 如果这样的依赖关系过于紧密,将使软件不能很好的抵御变化。 使用面向对象技术,可以将这种依赖关系落化,并形成一种稳定的依赖关系。从而实现软件体系结构的松 阅读全文
posted @ 2018-06-25 15:03 osbreak 阅读(154) 评论(0) 推荐(0) 编辑
摘要:thread_specific_ptr代表了一个全局的变量,而在每个线程中都各自new一个线程本地的对象交给它进行管理。 线程之间就不会因为访问同一全局对象而引起资源竞争导致性能下降。 而线程结束时,这个资源会被自动释放。 阅读全文
posted @ 2018-06-22 17:09 osbreak 阅读(2515) 评论(0) 推荐(0) 编辑
摘要:C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。 C++11中,官方似乎一直鼓励大家用lambda表达式,而不是函数对象,lambda表达式更易于使用和理解。 lambda表达式的语法如下: [capture_block](parameters) exceptions 阅读全文
posted @ 2018-06-22 11:20 osbreak 阅读(326) 评论(0) 推荐(0) 编辑
摘要:被抛弃的std::auto_ptr std::auto_ptr 能够方便的管理单个堆内存对象。auto_ptr用于指向一个动态分配的对象指针,他的析构函数用于删除所指对象的空间,以此达到对对象生存期的控制。 auto_ptr本质是管理权限的转移。在进行赋值,拷贝构造时,会对控制权进行转移。 使用场景总结: 1)不要使用auto_ptr对象保存指向静态分配对象的指针。 2)... 阅读全文
posted @ 2018-06-22 10:44 osbreak 阅读(151) 评论(0) 推荐(0) 编辑
摘要:1、方便资源的管理,自动释放没有指针引用的资源。 2、使用引用计数来标识是否有多余指针指向该资源。(shart_ptr本身指针会占1个引用) 3、在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。 std::shared_ptr p1(new Test); std::shared_ptr p2(new Test); p1 = p2; 4、引用计数加一/减一操作... 阅读全文
posted @ 2018-06-21 22:37 osbreak 阅读(194) 评论(0) 推荐(0) 编辑
摘要:unique_ptr使用场景 阅读全文
posted @ 2018-06-21 17:30 osbreak 阅读(477) 评论(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 阅读(457) 评论(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 阅读(195) 评论(0) 推荐(0) 编辑
摘要:pugixml比tinyxml快不止一个数量级pugixml 可以在github上直接下载到源码 https://github.com/zeux/pugixml 包括两个头文件(pugixml.hpp pugiconfig.hpp) 和 一个源文件(pugixml.cpp) 例子1 1 <?xml 阅读全文
posted @ 2018-06-21 16:36 osbreak 阅读(670) 评论(0) 推荐(0) 编辑
摘要:weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的 shared_ptr. weak_ptr只是提供了对管理对象的一个访问手段. 为了解决std::shared_ptr在相互引用的情况下出现的问题而存在的, std::shared_ptr赋值给weak_ptr时,weak_ptr 支持拷贝... 阅读全文
posted @ 2018-06-21 15:01 osbreak 阅读(933) 评论(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 阅读(494) 评论(0) 推荐(0) 编辑
摘要:遍历 multiset 容器元素 multiset<int>::iterator i, iend; iend = ms.end(); for (i=ms.begin(); i!=iend; ++i) cout << *i << ' '; 反向遍历 multiset 容器 multiset<int>: 阅读全文
posted @ 2018-06-21 10:22 osbreak 阅读(450) 评论(0) 推荐(0) 编辑
摘要:标准库还定义了一个 multimap 容器,它与 map 类似,所不同的是它允许重复键。 成员函数 insert() make_pair() 辅助函数来完成此任务。 find(k) 返回指向第一个与键 k 匹配的 pair 的迭代指针, count(k) 成员函数返回与给定键关联的值得数量。 low 阅读全文
posted @ 2018-06-20 23:28 osbreak 阅读(718) 评论(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 阅读(548) 评论(0) 推荐(0) 编辑
摘要:1.0 Map std::map的底层实现是基于红黑树的,这是一种高度平衡的二叉搜索树。这种数据结构使得map在进行查找时的效率非常高。此外,map的插入操作对其他节点的干扰非常小,这得益于它在插入新节点时会通过哈希函数找到相应的位置,然后更新链表,从而避免了整个树结构的移动。 + 键值对存储:以键 阅读全文
posted @ 2018-06-20 23:10 osbreak 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2018-06-20 22:57 osbreak 阅读(869) 评论(0) 推荐(0) 编辑
摘要:1、vector是表示可变大小数组的序列容器。 2、就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。 3、但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。4、capacity()返回 vector 阅读全文
posted @ 2018-06-20 22:50 osbreak 阅读(284) 评论(0) 推荐(0) 编辑
摘要:set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构, 在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值; 另外,还得确保根节点的左子树的高度与有字数的高度相等, 这样,二 阅读全文
posted @ 2018-06-20 22:38 osbreak 阅读(777) 评论(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 阅读(1491) 评论(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 阅读(207) 评论(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 阅读(1286) 评论(0) 推荐(0) 编辑
摘要:1、boost::thread类就代表一个可执行的线程。缺省构造函数创建一个代表当前执行线程的实例。 2、在类内部创建线程 3、绑定函数对象 4、如果要求start()和hello()方法不能是静态方法则采用下面的方法创建线程: 5、用类内部函数在类外部创建线程 6、每个线程都处理属于自己的数据实例 阅读全文
posted @ 2018-06-20 17:24 osbreak 阅读(443) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示