首页 > 解决方案 > 如何获取指针数组中的元素数量?

问题描述

如何获取指针数组中的元素数量?

下面是我的代码:

struct mystruct     
{    
  int a;    
  char ch[10];    
  int c;    
};

mystruct *m_arr[2];

我在其他一些文件中遍历这个数组。我不想在每个文件中硬编码为 2,而是想以编程方式获取数组中的元素数量。

标签: c++arrayspointers

解决方案


不要使用原始数组。使用标准容器,如std::vectoror std::array。这两个都有一个.size()成员,并允许基于范围的 for 语法:

    for (mystruct* p : m_arr)

如果您需要 C 兼容性,它们都提供了一个data()成员函数,该函数返回一个指向底层数组中第一个元素的指针。(在你的情况下,这将是一个mystruct **


编辑:原始数组还支持基于范围的 for 语法 - 但前提是可见声明包含元素的数量(这样my_struct* m_arr[2];很好,但my_struct* m_arr[]不起作用)。std::array如果不定义大小,就不可能声明 a 。其他容器(如std::vector)不包括声明中的大小。


推荐阅读