
C++
文章平均质量分 76
-西门吹雪
世味年来薄似纱,谁令骑马客京华。
小楼一夜听春雨,深巷明朝卖杏花。
矮纸斜行闲作草,晴窗细乳戏分茶。
素衣莫起风尘叹,犹及清明可到家。
展开
-
c++11 右值、右值引用、移动语义、完美转发必须搞清楚
c++11 右值、右值引用、移动语义、完美转发必须搞清楚引子引子1-起源示例1示例2(改进的示例1)示例3引子2-性能示例1示例2总结什么是值?左值`lvalue`临终值`xvalue(expiring value`)纯右值`prvalue`广义左值`glvalue`右值`rvalue`什么是声明符?关于引用左值引用右值引用引用折叠转发引用悬垂引用移动语义传统拷贝、赋值继承体系中的移动语义移动语义与编译器优化完美转发引子在介绍题目中内容之前我们先看一个几个示例引子1-起源作为一种追求执行效率的语言,原创 2022-04-28 17:57:34 · 2372 阅读 · 3 评论 -
C++17完整导引-组件之std::string_view
在`C++17`中,`C++`标准库引入了一个特殊的字符串类:`std::string_view`原创 2023-06-28 20:49:36 · 2871 阅读 · 0 评论 -
C++17完整导引-新组件之std::any
std::any is the smarter void*/shared_ptr. You can initialize an any with a value of any copyable type原创 2023-05-29 10:39:00 · 1795 阅读 · 0 评论 -
C++17完整导引-组件之std::variant
std::variant as a “safer union”原创 2023-05-26 20:20:02 · 2286 阅读 · 0 评论 -
C++17完整导引-组件之std::optional
optional 名称已经包含了一切原创 2023-05-23 17:12:13 · 1680 阅读 · 0 评论 -
C++17完整导引-模板特性之扩展的using声明
扩展的using 声明原创 2023-05-23 14:16:05 · 681 阅读 · 1 评论 -
C++17完整导引-模板特性之占位符类型模板参数
模板特性之占位符类型模板参数原创 2023-05-22 18:00:58 · 987 阅读 · 0 评论 -
C++17完整导引-模板特性之字符串字面量模板参数
字符串字面量模板参数原创 2023-05-22 15:43:46 · 575 阅读 · 0 评论 -
C++17完整导引-模板特性之折叠表达式
模板特性之折叠表达式原创 2023-05-22 15:29:45 · 946 阅读 · 0 评论 -
C++17完整导引-模板特性之编译器的if语句
模板特性之编译器的if语句原创 2023-05-22 14:29:01 · 1126 阅读 · 0 评论 -
C++17完整导引-模板特性之类模板参数推导
模板特性之类模板参数推到原创 2023-05-19 16:58:20 · 1984 阅读 · 0 评论 -
C++17完整导引-基本特性
C++ 17 的完整导引,带你进入17的代码世界原创 2023-05-19 11:53:15 · 12717 阅读 · 0 评论 -
容器中的operator[]注意事项
在实际的应用编程中需要注意std::map中的operator[] 的使用方法,如果不存在默认会插入原创 2023-05-16 11:13:11 · 598 阅读 · 0 评论 -
C++ 通过换行符分割字符串
用于c++分割字符串原创 2023-01-09 16:47:57 · 961 阅读 · 0 评论 -
C++std::async 简单研究
它是 `c++ `标准库提供的 `API`,用于异步(创建单独的线程)或同步(正常调用函数)执行任务(作为参数传递)。 这取决于启动策略。原创 2022-10-13 15:18:15 · 758 阅读 · 0 评论 -
简单的数据结构,避免类的手动伪封装
数据结构简化翻译 2022-09-29 10:35:39 · 180 阅读 · 0 评论 -
c++在线编辑器
C++在线的编辑器推荐原创 2022-09-28 20:44:25 · 12689 阅读 · 2 评论 -
Effective Modern C++[实践]->只要有可能使用constexpr,就使用它
- `constexpr`变量具备`const`属性,且必须由编译器已知的值完成初始化。>- `constexpr`函数在调用时,若传入的实参值都是编译期已知的,则返回的结果也是`constexpr`变量,否则返回非`constexpr`变量>- 比起非`constexpr`变量或`constexpr`函数而言,`constexpr`函数或`constexpr`变量可以用在一个作用域更广的语境中>- `constexpr `是对象和函数接口的一部分。原创 2022-09-28 17:19:18 · 973 阅读 · 0 评论 -
c++ 关于注释的故事
注释用于向读取代码的人指示某些内容。注释被编译器视为空白,不会改变代码的实际含义。`C` 语言中有两种注释语法,原始的`/* */`和稍微新一点的`//`。一些文档系统如`Doxygen`使用特殊格式的注释来帮助生成代码的文档。原创 2022-09-21 18:29:09 · 336 阅读 · 0 评论 -
深入C++:书籍|工具|教程|博客|社区
不要被“精通 C++”这个标题冲昏了头脑。 这是一个永无止境的旅程。 因为 ISOCPP 每三年 释放一次小象。 目前该标准涵盖近 1500 页,C++ 并不是最容易学习和掌握的语言。 我已经在这个行业度过了足够多的时间。 但有时还是觉得冒名顶替。 我想分享我的 现代 C++ 之旅已经有一段时间了。 虽然,我正在通过这些文章一点一点地分享知识。 但是,还有其他一些东西帮助我度过了这段旅程,比如在线工具、书籍、课程、博客等。所以,以下是这些项目的无序列表。翻译 2022-09-01 21:17:06 · 184 阅读 · 0 评论 -
Effective Modern C++[实践]->只要函数不会发射异常,就为其加上noexcept
noexcept声明式函数接口的组成部分,这意味着调用方可能会对它有依赖 相对于不带noexcept声明的函数,带有noexcept声明的函数有更多的机会得到优化 noexcept对于移动语义swap,内存释放函数和析构函数非常有用 大多数函数是异常中立的,而不是noexcept...原创 2022-08-30 15:51:43 · 205 阅读 · 0 评论 -
Effective Modern C++[实践]->优先使用 const_iterator 而非 iterator
优先使用 `const_iterator` 而不是` iterator`。任何时候只要你需要一个迭代器而其指涉内容没有修改必要时,你就应该使用`const_iterator `原创 2022-07-06 16:31:25 · 678 阅读 · 0 评论 -
删除数组中的某几个元素
删除数组中的多个元素原创 2022-07-05 15:47:39 · 951 阅读 · 0 评论 -
Effective Modern C++[实践]->使用 override 关键字声明要重写的函数
用关键字 override 声明覆盖函数。成员函数引用后置修饰符可以区别对待左值和右值对象原创 2022-07-04 20:37:26 · 385 阅读 · 0 评论 -
Effective Modern C++[实践]->优选delete关键字删除函数,而非private未定义函数
如果使用特殊语法 `= delete ;`取代函数体,那么该函数被定义为弃置的`(deleted)`。**任何弃置函数的使用**都是非良构的(程序无法编译)。原创 2022-07-04 14:27:29 · 501 阅读 · 0 评论 -
Effective Modern C++[实践]->优先使用 scoped enums,而非 unscoped enums
1. `C++98` 风格的枚举,现在称作为` unscoped enum`。2. `scoped enum` 的枚举元素只在` enum` 内可见, 元素只能强制转换成其他类型。3. `scoped enum` 和` unscoped enum` 都可以指定潜在类型。 `scoped enum `默认是 `int`,`unscoped enum `没有默认类型。4. `scoped enum` 总是能前置声明,`unscoped enum` 只有指定了潜在类型, 才可以前置声明。.........原创 2022-07-01 11:14:00 · 821 阅读 · 0 评论 -
Effective Modern C++[实践]->优先选用别名声明,而非typedef
typedef 不支持模版化,但是using的别名声明可以; 模版别名避免了传统的typedef带来的::type后缀,以及在类型引用的时候需要的typename前缀; C++14给所有的C++11模版类型萃取提供了别名原创 2022-06-30 18:26:01 · 337 阅读 · 0 评论 -
Effective Modern C++[实践]->优先使用nullptr,而非0或NULL
1. 优先使用 nullptr,而不是 0 和 NULL2. 避免在整数和指针类型上重载原创 2022-06-30 11:03:27 · 578 阅读 · 0 评论 -
Effective Modern C++[实践]->在创建对象时注意区分()和{}
{}初始化是最广泛的初始化语法,它可以阻止窄化转换,并且避免了C++最复杂的语法解析原创 2022-06-29 18:31:36 · 951 阅读 · 0 评论 -
Effective Modern C++[实践]->auto类型推导不符合要求时,使用强转
带显示型别的初始化物习惯用法强制auto推导出你想要的类型原创 2022-06-28 15:55:22 · 427 阅读 · 0 评论 -
Effective Modern C++[实践]->理解decltype
理解decltype原创 2022-06-27 20:52:00 · 534 阅读 · 0 评论 -
Effective Modern C++[实践]->理解auto类别推导
auto关键推导示例说明原创 2022-06-27 16:43:18 · 258 阅读 · 0 评论 -
Effective Modern C++[实践]->理解模板类别的推导
理解模板类别的推导原创 2022-06-27 12:09:42 · 265 阅读 · 0 评论 -
C++ 函数中静态变量的生命周期是多少?
静态局部变量的一点考究原创 2022-06-09 14:52:29 · 2607 阅读 · 1 评论 -
new和delete深度使用研习
众所周知c使用mollac和calloc函数在运行时动态分配内存,并使用free()释放动态分配的内存。c++支持这些函数,并且还有两个运算符new和delete,他们以更好、更简单的方式执行分配和释放内存。对于int a、char str[10]等普通变量, 内存会自动分配和释放。 对于像int *p = new int[10]这样的动态分配内存,程序员有责任在不再需要时释放内存。 如果程序员不释放内存,则会导致 内存泄漏 (直到程序终止时才会释放内存)。new 运算符请求堆中的内存分配。 如果有原创 2022-05-17 11:03:37 · 387 阅读 · 1 评论 -
ASN.1玩法
ASN.1玩法ASN.1 简介编译依赖说明编译使用新建一个asn的文件编译asn文件俩种方式使用自定义的main函数使用生成` converter-sample.c`文件问题ASN.1 简介ASN.1 是一种计算机语言,由 CCITT/ITU 用于规范数据类型和值,尤其是在通信中 协议。 虽然它是为 OSI 表示层设计的, 它可以用于许多其他目的,例如较低的 OSI 层协议 和许多其他协议架构。ASN.1 通常用于定义协议 通信协议的数据单元 (PDU)。 将 PDU 映射到 具体的八位字节序列,AS原创 2022-04-14 20:43:17 · 2712 阅读 · 1 评论 -
c++ 虚函数基础1
初识虚函数虚函数源码如下#include <iostream>using namespace std;class A{public: virtual void printAA(){cout<<"print A";}};class B:public A{public: virtual void printAA(){cout<<"print B";}};int main(){ A* a = new B(); a->printAA原创 2022-04-12 16:10:44 · 403 阅读 · 0 评论 -
C++的四个强制类型转换(未完成)
const_cast测试代码#include <iostream>using namespace std;struct type { int i; type() : i(3) {} void f(int v) const { // this->i = v; // 编译错误:this 是指向 const 的指针 const_cast<type *>(this)->i = v;原创 2022-01-05 20:39:22 · 1244 阅读 · 0 评论 -
ubuntu VScode 无法输入中文
snap安装无法输入中文snap相关命令在应用商店中查找snap:sudo snap find <软件包名>安装Snap软件:sudo snap install <snap软件包名>更新Snap软件:sudo snap refresh <snap软件包名>更新所有的snap软件包:sudo snap refresh all要将Snap还原到以前安装的版本:sudo snap revert <snap软件包名>卸载snap软件:sudo原创 2021-11-17 15:09:52 · 1606 阅读 · 0 评论 -
‘make_unique’ is not a member of ‘std’
../UniqueStrTest/main.cpp: In function ‘int main(int, char**)’:../UniqueStrTest/main.cpp:35:25: error: ‘make_unique’ is not a member of ‘std’ auto p = std::make_unique<D>(); // p 是占有 D 的 unique_ptr ^~~~~~~~~~~ma原创 2021-10-29 16:30:58 · 4165 阅读 · 0 评论