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