- 博客(14)
- 收藏
- 关注
翻译 sougou/workflow《list.h》
sougou/workflow《list.h》#ifndef _LINUX_LIST_H#define _LINUX_LIST_H/* * Simple doubly linked list implementation. * * Some of the internal functions ("__xxx") are useful when * manipulating whole lists rather than single entries, as * sometimes we a
2024-07-01 23:35:54 26
原创 C++11 使用using替换typedef来给模板取别名
是std中用于判断类型是否相同的模板类,模板类接收两个类型参数来实例化模板,其成员类型value输出结果,1则为相同。C++11中,我们倡导使用using来替代typedef为类型定义别名。模板编程时,可使用using定义模板,而typedef无法做到。C++中,我们原本使用typedef为类型定义别名。
2022-12-13 00:52:25 352 1
原创 inline namespace C++11新特性 内联命名空间
而如果想继续使用旧版本,可写出完整的命名空间路径即可。但如果inline使用不当,可能此举会破坏namespace的封装性,namespace的用法不再赘述,主要是用于分割全局命名空间,避免出现全局的变量或函数名或类名重名。内联的名字空间允许程序员在父名字空间定义或特化子名字空间的模板。因此有利于类库的维护,当发布更新版本的类库时,
2022-12-13 00:31:22 246
原创 用户定义字面量的用法
通过运用用户定义自变量,最主要的作用是减少代码量,通过使用字面量函数的临时变量返回值,可减少局部变量的定义,使代码书写起来也更加清晰。其中用户自定义后缀尽可能使用“_”下划线作为开头,否则很可能会与C++原生的表示方式冲突,如。无法容纳该字面量时,会将其转换为字符串,以’\0’结束,并调用。基于用户定义自变量,我们将很方便使用指定类型的值,比如使用。然而用户定义字面量也不是随意定义的,有如下。,即长度已知的字符串作为参数。,参数只能为一个char。参数版本的字面量函数。,注意中间必须有空格。
2022-12-09 00:32:21 415
原创 非受限联合体 介绍与用法
联合体是一种在C/C++中的构造类型的数据结构,联合体内可定义多种不同数据类型,它们会共享内存空间。在C++98中,非POD类型成员的联合体无法通过编译,例如:不仅包含非pod类型的联合体无法通过编译,C++98标准也不允许联合体拥有静态或引用类型的成员。本意是为了与C尽可能兼容,但使联合体的使用受限。非受限联合体:实践证明C++98对联合体的限制没有什么意义,而且随C++发展,有些东西已经和C发生了本质上的区别,没必要再为C兼容联合体,因此新标准(C++11)规定,任何非引用类型(也就是不限制非PO
2022-12-07 00:48:08 383
原创 const char *转 uint8_t* C++风格 无警告通过编译
项目中遇到如题需求,因为有编译警告视为错误的要求,因此不可使用c风格强转,采用C++风格进行强制转换:代码如下
2022-12-06 20:43:11 1632
原创 如何判断类型是否是POD,以及POD的优点
POD通常用于说明一个类型的属性,尤其是用户自定义类型POD是一种普通属性,不像虚函数或虚继承那样特别,主要体现在与C兼容,可使用C的老方法,如memcpy等POD被分为平凡的和标准布局的,两种基本概念何为平凡的?**何为标准布局的?**标准布局应符合以下规则例如:没有虚函数和虚基类所有非静态数据成员均符合标准布局类型,其基类也符合标准布局同样地,C++11也提供辅助方法判断一个类型是否是标准布局的:但C++11比较智能,要判断一个类型是否是POD,不需要分别调用判断是否平凡、是否标准布局两种方法
2022-12-06 00:00:49 543
原创 C++11 初始化列表用法
但一些自定义类型(包括标准库中形如vector这样的容器)是不被允许的,在C++11中增加了该功能,这种初始化的方法被称为“初始化列表”方法:include 头文件。使用列表初始化还有一个最大优势是可以防止类型收窄。
2022-12-02 00:35:45 502
原创 C++11explicit显式类型转换的作用
C++的隐式转换,有好处也有坏处,因为是“自动的”,导致有时它的行为与我们预期不符。explicit是用于指定显示类型转换的,C++11#include <iostream> using namespace std; template <typename T> class Ptr { public: Ptr(T* p): _p(p) {} operator bool() const { if (_p != 0) return true;
2022-12-01 00:35:06 420
原创 MFC树控件的递归遍历(只有一个父节点,最深子节点为2级,拥有复选框)
//遍历树控件(只有一个父节点,命名为“所有模板”)void CCheckOverLapDlg::TraverseTree(CTreeCtrl* pTreeCtrl){ CString strParent = _T("所有模板"); //主函数入口 TraverseTreeBranch(pTreeCtrl, pTreeCtrl->GetRootItem(), TVI_ROOT, strParent, 1);}void CCheckOverLapDlg::TraverseTreeBran
2021-06-02 10:14:23 584
原创 map默认排序是按key递增 ,改递减方法:
std::map<int, int, std::greater<int> > m;//在创造map时,增加参数 **std::greater<int>**,就变成增加
2020-09-09 09:04:27 1017
原创 CString和std::wstring互转,LPCTSTR和std::wstring互转
CString转std::wstringstd::wstring str = filename.GetString();std::wstring转CStringCString str( filename.c_str() ); LPCTSTR str;std::wstring cs = (LPCTSTR)str;str = cs.c_str();
2020-09-09 09:03:02 456
原创 在string和wstring中查找是否有某个字符串
std::string mbs = "怎么find一个中文wchar_t字符?";//如果没有找到mbsPos返回一个相当大的值size_t mbsPos = mbs.find("中文");if(mbsPos<100) return true;//如果找得到,那mbsPos一般情况下会小于100 std::wstring wcs = L"怎么find一个中文wchar_t字符?";size_t wcsPos = wcs.find(L"中文"); ...
2020-09-09 09:02:16 2566
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人