mmxingye

导航

2023年10月9日 #

01 | vim安装 YCM 插件后依然没有头文件提示

摘要: 我们在使用 vim 编写 C 或者 C++ 的代码的时候,没有自动提示很影响编辑体验。 那么我建议安装 YCM 插件,本文是基于安装完毕该插件的情况下,依然没有头文件自动提示的情况进行说明。 YCM 插件有三个头文件提示来源。 vim 自带的 ctags 机制 vim 打开的文件夹内的 compil 阅读全文

posted @ 2023-10-09 23:49 独立树 阅读(129) 评论(0) 推荐(0) 编辑

2023年4月26日 #

12 | C语言中的函数类型和函数指针类型

摘要: 函数类型和函数指针类型的区别,让我们先看一个例子 #include <iostream> using namespace std; typedef int(Func)(int); typedef int(*Func_p)(int) ; int f(int a){return a;} int main 阅读全文

posted @ 2023-04-26 11:51 独立树 阅读(40) 评论(0) 推荐(0) 编辑

18 | C++表达式计算

摘要: 最初想要在 C++ 中找到 类似 python 中 eval 的实现,但是找了好久都没有找到,即 将字符串转换成表达式进行求值 的愿望终究还是没有实现。但是如果字符串是简单的 算术表达式的话,还是可以做的。 下面就来分享大佬的代码,已经忘记在哪里找到的了。 // CPP program to eva 阅读全文

posted @ 2023-04-26 11:26 独立树 阅读(96) 评论(0) 推荐(0) 编辑

02 | C++lambda容易忽略的点

摘要: 1.模板化的lambda 如果我们的 lambda 接收容器(假定我们老老实实的传入容器),并且要提取出容器中的元素类型,应该怎么做呢? 之前我们可能这样做 auto f=[](auto vector){ using T=typename decltype(vector)::value_type; 阅读全文

posted @ 2023-04-26 10:15 独立树 阅读(25) 评论(0) 推荐(0) 编辑

2023年4月23日 #

03 | 写一个能产生斐波那契数列的range——惰性求值

摘要: 1.首先为了满足 range 概念的要求我们需要提供 begin() 和 end() 2.begin() 和 end() 返回的应该是迭代器,注意这个地方两种可以返回两种不同类型(c++17后即可) 3.为了满足迭代器 概念的要求我们提供5个 typedef,并根据 std::input_itera 阅读全文

posted @ 2023-04-23 11:32 独立树 阅读(28) 评论(0) 推荐(0) 编辑

02 | 产生0,1,2...的序列大致有几种方法

摘要: 1.写死的for循环 2.生成序列和打印序列分开(占据极大的内存) 3.用static来实现(缺点:引入了全局的状态) 4.用类来实现(缺点:编写类定义太麻烦) 5.使用 lambda 闭包init 6.使用协程 注意,此处的协程类是需要自己的实现的。 阅读全文

posted @ 2023-04-23 11:17 独立树 阅读(14) 评论(0) 推荐(0) 编辑

01 | ranges的初步印象(新旧做法的对比)

摘要: 1.ranges::sort——给容器排序 在这之前我们需要采用 标准库的sort 算法并且需要传入两个迭代器。但是现在我们可以这样,使用 ranges 命名空间下的 sort 函数,仅需要传入一个容器的名字即可。 以下是涉及到的concepts 2.views的概念——给对象进行筛选、转换、复制 阅读全文

posted @ 2023-04-23 11:11 独立树 阅读(60) 评论(0) 推荐(0) 编辑

2023年4月10日 #

01 | C++ADL(依赖于参数的查询)

摘要: namespace MyNamespace { class MyClass {}; void doSomething(MyClass); } MyNamespace::MyClass obj; // global object int main() { doSomething(obj); // Wo 阅读全文

posted @ 2023-04-10 15:47 独立树 阅读(19) 评论(0) 推荐(0) 编辑

02 | C++17中的异常规格说明(noexcept)

摘要: 异常规范 (throw、noexcept) (C++) | Microsoft Learn 相信大家都已经熟悉了在标准库函数后面常常看到的 noexcept 函数。其含义是明确告诉编译器该函数不会抛出异常。(但如果你抛出了异常,程序会立即中止,注意立即中止和未定义行为不是一个概念!!). 推荐大家了 阅读全文

posted @ 2023-04-10 15:33 独立树 阅读(196) 评论(0) 推荐(0) 编辑

01 | C语言异常处理(jmp_buf、setjmp、longjmp)

摘要: 首先说明,C语言中的异常处理主要还是 错误码的思路. 其次,C语言中是有 返回两次的函数的 ,比如说 fork()函数 在 C 语言中是没有 try catch 块的,但并不代表没有异常处理。 接下来我们简单明确三个概念,最后来一个简单的小例子。 1.三个概念 使用一个 jmp_buf 的类型变量来 阅读全文

posted @ 2023-04-10 15:19 独立树 阅读(223) 评论(0) 推荐(0) 编辑