一个成员数组
One-member Array?
下面是我在OpenCV中遇到的两行c++代码。
const Point* ppt[1] = { rookPoints[0] };
int npt[] = { 20 };
这个和下面的有什么区别?
const Point* ppt = rookPoint[0];
int npt = 20;
单成员数组比单变量数组有什么特殊的优点吗?
使用只有一个元素的数组意味着如果数组中的元素数量增加,使用它的代码不必改变。
与其他技术结合使用的优势,并不是因为使用了一个只有一个元素的数组
例如,给定
int npt[] = {20};
后续代码可能执行
for (i = 0; i < sizeof(npt)/sizeof(*npt); ++i)
{
// do something worthwhile with npt[i]
}
如果,随后,npt[]
的定义更改为
int npt[] = {20, 30, 40};
则后续代码仍可按预期工作。
然而,如果我们用int npt = {20};
声明"后续代码",如果在将来某个时候需要扩展它以处理包含2个或更多值的数组,则需要重写。
显然这是马的课程。这些技术将用于基于数组中有1个或多个值的设计(以及给定这种设计规范的代码生成器)。
语法上的区别是明显的。
const Point* ppt[1] = { rookPoints[0] };
int npt[] = { 20 };
定义两个数组而
const Point* ppt = rookPoint[0];
int npt = 20;
定义两个对象
有趣的问题是,当每个数组中只有一个元素时,为什么需要定义数组呢?
这个问题的答案取决于使用这些变量的代码。在没有看到使用它们的代码的情况下,我不得不对开发人员进行怀疑,并假设需要数组。
相关文章:
- 是否可以将结构数组别名为结构成员数组?
- C++:初始化 constexpr 构造函数中的成员数组
- 使用带有参数包的数组的成员数组初始化类
- C++ 在析构函数调用之前删除的动态成员数组
- 初始化在类类型 #define 中定义的非静态成员数组,不带默认 ctor
- 指向具有不同大小的成员数组的指针
- 用另一个 constexpr 数组对成员数组进行大括号初始化
- 对象成员数组C++默认初始化
- 如何在构造函数中的类成员数组中分配数组值,而无需使用STD库
- 将类成员数组组合到单个数组时性能下降
- 如何将数据从公共方法添加到同一类中的私有成员数组中?
- 如何在C 中的派生类中分配数据成员数组
- C 集合构建器中类成员数组的2D数组大小
- 初始化不可复制、不可移动、显式构造类型的成员数组
- C 指针可以指向字符串文字的静态成员数组
- 成员数组位于何处
- 将对象成员数组与字符串进行比较
- 如何在 c++ 中从对象数组中获取数据成员数组
- 声明模板会员参考另一个类的模板成员数组
- C 初始化成员数组