随笔分类 - C++ / C++11
摘要:1. 拷贝构造函数 定义:FourByteStruct(const FourByteStruct &fourByteStruct) 调用时机: 当初始化一个对象时使用另一个相同类型的对象。例如:FourByteStruct obj1; // 默认构造 FourByteStruct obj2 = ob
阅读全文
摘要:1.就地构造通常与 union 关键字一并使用,因为union会进行延迟构造并且预先开辟空的内存空间,因此这样的组合任务是较佳实现。 例子: class FixedValueMessage { /* 定值数据 */ public: explicit FixedValueMessage(const E
阅读全文
摘要:1.std::move 的作用: std::move 本身只是一个类型转换操作。它将一个左值表达式转换为一个右值引用表达式。 重要的是要理解 std::move 不执行任何实际的移动操作。 它只是使对象能够被移动。 2.移动语义依赖于移动构造函数/移动赋值运算符: 移动语义的真正实现依赖于类是否定义
阅读全文
摘要:// 基本情况:没有更多的 bitset 需要拼接 template<typename... Args> std::bitset<8 * sizeof...(Args)> concatenate_bitsets() { return std::bitset<8 * sizeof...(Args)>(
阅读全文
摘要:关于bitset的一些用法 强调std::vector<bool> 会被特化为bitset。 四个字节表示一个bool值回被 用一个bit位取代,因此会导致迭代器失效,所以进行状态压缩时应当考虑使用bitset容器。 bitset可以通过u_char进行初始化 1 u_char tmp = 'a';
阅读全文
摘要:实现场景: 前端维护一个进度条,后端进行异步调用,查询状态。为防止用户界面被阻塞故采用异步操作调用。 std::future 可以理解为一个轻型Thread std::future 相对于QtConcurrent ,std::future不要求传入函数必须为static声明,这大大提高了灵活性。 参
阅读全文
摘要:void StringToBCD(const char* strSource, uint8_t byBCDTarget[8]) { // 初始化BCD数组 memset(byBCDTarget, 0, 8); // 计算输入字符串的长度 size_t length = strlen(strSourc
阅读全文
摘要:C++语法下实测: ^(?!(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9]|con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\.[^.]*)?$)[^<>:\"/\\\\|?*\\x00-\\x1F]*[^<>:\"/\\\\|?*\\x00-\
阅读全文