一个成员数组

One-member Array?

本文关键字:成员 数组 一个      更新时间:2023-10-16

下面是我在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;

定义两个对象

有趣的问题是,当每个数组中只有一个元素时,为什么需要定义数组呢?

这个问题的答案取决于使用这些变量的代码。在没有看到使用它们的代码的情况下,我不得不对开发人员进行怀疑,并假设需要数组。