12 2022 档案
摘要:本文介绍 C++11 标准中新添加的 long long 超长整型和 nullptr 初始化空指针。 1. C++11:long long 超长整型 C++ 11 标准中,基于整数大小的考虑,共提供了如下表所示的这些数据类型。与此同时,标准中还明确限定了各个数据类型最少占用的位数。 | 整数类型 |
阅读全文
摘要:1. C++常量表达式 constexpr 是 C++ 11 标准新引入的关键字,在学习其具体用法和功能之前,我们需要先搞清楚 C++ 常量表达式的含义。 所谓常量表达式,指的就是由多个(≥1)常量组成的表达式。换句话说,如果表达式中的成员都是常量,那么该表达式就是一个常量表达式。这也意味着,常量表
阅读全文
摘要:1. C++ 98/03标准的for循环 在C++ 98/03标准中,如果要用 for 循环语句遍历一个数组或者容器,只能套用如下结构: for(表达式 1; 表达式 2; 表达式 3){ //循环体 } 例如,下面程序演示了用上述结构遍历数组和容器的具体实现过程: #include <iostre
阅读全文
摘要:在 C/C++ 中,联合体(Union)是一种构造数据类型。在一个联合体内,我们可以定义多个不同类型的成员,这些成员将会共享同一块内存空间。老版本的 C++ 为了和C语言保持兼容,对联合体的数据成员的类型进行了很大程度的限制,这些限制在今天看来并没有必要,因此 C++11 取消了这些限制。 C++1
阅读全文
摘要:在 C++98/03 中,对象初始化方法有很多种,如下代码所示: //初始化列表 int i_arr[3] = { 1, 2, 3 }; //普通数组 struct A { int x; struct B { int i; int j; } b; } a = { 1, { 2, 3 } }; //P
阅读全文
摘要:C++11 标准新引入了一种类模板,命名为 tuple(元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。 tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以将这些数据存储在 tuple 中,函数只需返
阅读全文
摘要:在 C++98/03 标准中,类模板可以有默认的模板参数,如下: template <typename T, typename U = int, U N = 0> struct Foo { // ... }; 但是却不支持函数的默认模板参数: template <typename T = int>
阅读全文
摘要:返回值类型后置语法,是为了解决函数返回值类型依赖于参数而导致难以确定返回值类型的问题。有了这种语法以后,对返回值类型的推导就可以用清晰的方式(直接通过参数做运算)描述出来,而不需要像 C++98/03 那样使用晦涩难懂的写法。 在泛型编程中,可能需要通过参数的运算来得到返回值的类型。比如如下的代码:
阅读全文
摘要:1、轮廓提取 轮廓提取是提取出图像的外部轮廓特征,轮廓可能是边缘的一部分。 2、轮廓提取方法及Python实现 2.1 掏空内部点法 掏空内部点法的原理非常简单:如果原图中有一点为黑,且它的8个相邻点皆为黑色,则将该点删除,否则认为该点在图像的边缘,需要保留。依次处理图像中每一个像素,则最后留下来的
阅读全文