随笔分类 -  C++

摘要:函数remove_if()移除序列[start, end)中所有应用于谓词p返回true的元素. 此函数返回一个指向被修剪的序列的最后一个元素迭代器. 记住, remove_if()并不会实际移除序列[start, end)中的元素; 如果在一个容器上应用remove_if(), 容器的长度并不会改 阅读全文
posted @ 2018-03-17 15:28 瓜蛋 阅读(5449) 评论(0) 推荐(0) 编辑
摘要:std::string str = "abcdefg,"; std::cout << "last character:"<<str.back() << std::endl; //输出最后一个字符 str.pop_back(); //删除最后一个字符 阅读全文
posted @ 2018-03-12 21:17 瓜蛋 阅读(955) 评论(0) 推荐(0) 编辑
摘要:假如主线程 某一个按钮 点击的 响应要操作与另一个线程共享的 变量。 在这个点击响应里先lock 之后,假如另一个线程的变量正在 “使用”状态,并且内部又调用了SendMessage试图更新界面的某些东西,这样就会造成SendMessage阻塞和Lock Mutex的死锁阻塞。 具体是什么意思呢; 阅读全文
posted @ 2018-02-01 10:25 瓜蛋 阅读(979) 评论(0) 推荐(0) 编辑
摘要:C++ 11添加了两个继承控制关键字:override和final。 override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名。final阻止类的进一步派生和虚函数的进一步重载 阅读全文
posted @ 2018-01-17 12:39 瓜蛋 阅读(177) 评论(0) 推荐(0) 编辑
摘要:注意包含顺序 要将 $(DXSDK_DIR)Include放在后面才行 $(VC_IncludePath)$(WindowsSDK_IncludePath)$(DXSDK_DIR)Include 为了以后写dx代码不用重新配置包含目录和库目录,我新建了一个dx11.props。 注意,在属性管理器中 阅读全文
posted @ 2018-01-17 12:27 瓜蛋 阅读(709) 评论(0) 推荐(0) 编辑
摘要:CreateDialog创建非模态对话框时 其内部 会发送几条消息例如: WM_INITDIALOG,WM_SETFONT DS_SETFONT , DS_SHELLFONT. 所以如果在另一个CallWndProc中调用CreateDailog时,有可能发生递归调用情况。 例如:你用 ::SetW 阅读全文
posted @ 2018-01-04 14:53 瓜蛋 阅读(1604) 评论(0) 推荐(0) 编辑
摘要:本文转自:http://senlinzhan.github.io/2017/09/17/boost-asio/ Boost.Asio 有两种支持多线程的方式,第一种方式比较简单:在多线程的场景下,每个线程都持有一个io_service,并且每个线程都调用各自的io_service的run()方法。 阅读全文
posted @ 2017-12-18 04:04 瓜蛋 阅读(3155) 评论(0) 推荐(0) 编辑
摘要:本文转自:http://blog.csdn.net/byxdaz/article/details/71088812 一、io_service的作用 io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队 阅读全文
posted @ 2017-12-16 04:48 瓜蛋 阅读(1242) 评论(0) 推荐(0) 编辑
摘要:以前经常学习虑函数 最多的是当基类指针构造子类对象时,调用函数的应用,但是以前没这一点:子类对象调用基类成员函数A,然后基类成员函数又会调用一个类成员函数B,这个类成员函数B在子类中也定义,基类中也定义(基类和子类同时拥有)。此时成员函数A内部是调用基类的成员函数B还是子类的成员函数B呢。答案是:当基类的这个成员函数声明为virtual时,不管怎样,只有子类有此函数,优先调用子类的。否则,调用基类... 阅读全文
posted @ 2017-12-12 19:31 瓜蛋 阅读(251) 评论(0) 推荐(0) 编辑
摘要:std::thread 构造之后 使用 detach。就可以了 阅读全文
posted @ 2017-11-13 23:16 瓜蛋 阅读(762) 评论(0) 推荐(0) 编辑
摘要:在我的电脑上要想通过 std::wcout输出 宽字符 需加入以下代码 而且以后的输出不能用std::cout必须要用std::wcout 阅读全文
posted @ 2017-11-13 00:04 瓜蛋 阅读(1041) 评论(0) 推荐(0) 编辑
摘要:在_ConnectionPtr析构的时候要将_ConnectionPtr置NULL ADODB::_ConnectionPtr conn;conn.CreateInstance(__uuidof(ADODB::Connection));.........conn.Close();conn = NUL 阅读全文
posted @ 2017-10-26 11:23 瓜蛋 阅读(453) 评论(0) 推荐(0) 编辑
摘要:为什么要用移动语义 先看看下面的代码 以上代码拷贝构造函数会被调用两次,一次是从GetTemp函数中有HugeMem()生成的一个临时值用作返回值,另外一次则由临时值构造出main中的变量a。析构函数调用了三次。这个过程如果指针指向非常大的内存时拷贝构造 的代价相当昂贵。而令人堪忧的是:临时变量的生 阅读全文
posted @ 2017-10-14 00:07 瓜蛋 阅读(4125) 评论(0) 推荐(2) 编辑
摘要:boost boost::asio::read 尝试读一定数量的字节,直到读到为止,或者出错 socket.read_some 读一下socket,读到多少算多少 带async的类似 阅读全文
posted @ 2017-10-10 11:53 瓜蛋 阅读(1656) 评论(0) 推荐(0) 编辑
摘要:封装和解析类似json的 key-value 示例 {"ID" = 333,"name"="zds","3333"="ende"} 解析Socket示例 各类数据结构: msgpack::object 他是一个引用,拷贝他的代价少,因为他是浅拷贝msgpack::object_handle 他管理了 阅读全文
posted @ 2017-09-20 13:14 瓜蛋 阅读(2179) 评论(0) 推荐(0) 编辑
摘要:std::string 的begin到end是不包含 ‘\0’的 阅读全文
posted @ 2017-07-27 00:25 瓜蛋 阅读(823) 评论(0) 推荐(0) 编辑
摘要:这种情况一般多个线程读是不需要加锁的。就在写的时候需要加锁。 那么要做的就是让不写的时候,读不受同步限制。让多线程自由的读。 这个时候就要用读写锁 boost已经有读写锁,而c++ 14才有读写锁。 阅读全文
posted @ 2017-07-06 21:27 瓜蛋 阅读(3738) 评论(0) 推荐(0) 编辑
摘要:本文已于20170903更新完毕,所有boost asio 代码均为本人手抄。编译器为vs2013,并且所有代码已经上传,本文下方可下载源码 为了学习boost asio库,我是从boost的官方boost asio的教程学起的。 每一个示例我都抄写了一遍以加深记忆,每一个例子我都用自己的话概括一遍 阅读全文
posted @ 2017-06-27 17:18 瓜蛋 阅读(5316) 评论(1) 推荐(0) 编辑
摘要:asio 中的resolver一般用于将host等信息转化为socket信息,类似于getaddrinfo() 以下代码 输出结果为: 阅读全文
posted @ 2017-06-27 15:07 瓜蛋 阅读(1403) 评论(0) 推荐(0) 编辑
摘要:这个错误的中文解释是:由于线程退出或应用程序请求,已中止 I/O 操作。 最近几天学习boost asio 在抄官方的一个实例代码时遇到 了,这个错误搞了我三天才解决,就是在一行代码中少了一个 s 所致。 正确的代码是这样 的 而我因为手误将代码写成这样 这样导致 server对象过早析构造成了这个 阅读全文
posted @ 2017-06-26 15:48 瓜蛋 阅读(1716) 评论(0) 推荐(0) 编辑