摘要:函数类型和函数指针类型的区别,让我们先看一个例子 #include <iostream> using namespace std; typedef int(Func)(int); typedef int(*Func_p)(int) ; int f(int a){return a;} int main
阅读全文
摘要:最初想要在 C++ 中找到 类似 python 中 eval 的实现,但是找了好久都没有找到,即 将字符串转换成表达式进行求值 的愿望终究还是没有实现。但是如果字符串是简单的 算术表达式的话,还是可以做的。 下面就来分享大佬的代码,已经忘记在哪里找到的了。 // CPP program to eva
阅读全文
摘要:1.模板化的lambda 如果我们的 lambda 接收容器(假定我们老老实实的传入容器),并且要提取出容器中的元素类型,应该怎么做呢? 之前我们可能这样做 auto f=[](auto vector){ using T=typename decltype(vector)::value_type;
阅读全文
摘要:1.首先为了满足 range 概念的要求我们需要提供 begin() 和 end() 2.begin() 和 end() 返回的应该是迭代器,注意这个地方两种可以返回两种不同类型(c++17后即可) 3.为了满足迭代器 概念的要求我们提供5个 typedef,并根据 std::input_itera
阅读全文
摘要:1.写死的for循环 2.生成序列和打印序列分开(占据极大的内存) 3.用static来实现(缺点:引入了全局的状态) 4.用类来实现(缺点:编写类定义太麻烦) 5.使用 lambda 闭包init 6.使用协程 注意,此处的协程类是需要自己的实现的。
阅读全文
摘要:1.ranges::sort——给容器排序 在这之前我们需要采用 标准库的sort 算法并且需要传入两个迭代器。但是现在我们可以这样,使用 ranges 命名空间下的 sort 函数,仅需要传入一个容器的名字即可。 以下是涉及到的concepts 2.views的概念——给对象进行筛选、转换、复制
阅读全文
摘要:namespace MyNamespace { class MyClass {}; void doSomething(MyClass); } MyNamespace::MyClass obj; // global object int main() { doSomething(obj); // Wo
阅读全文
摘要:异常规范 (throw、noexcept) (C++) | Microsoft Learn 相信大家都已经熟悉了在标准库函数后面常常看到的 noexcept 函数。其含义是明确告诉编译器该函数不会抛出异常。(但如果你抛出了异常,程序会立即中止,注意立即中止和未定义行为不是一个概念!!). 推荐大家了
阅读全文
摘要:首先说明,C语言中的异常处理主要还是 错误码的思路. 其次,C语言中是有 返回两次的函数的 ,比如说 fork()函数 在 C 语言中是没有 try catch 块的,但并不代表没有异常处理。 接下来我们简单明确三个概念,最后来一个简单的小例子。 1.三个概念 使用一个 jmp_buf 的类型变量来
阅读全文