c++ - 如何获取指针数组中的元素数量?
问题描述
如何获取指针数组中的元素数量?
下面是我的代码:
struct mystruct
{
int a;
char ch[10];
int c;
};
mystruct *m_arr[2];
我在其他一些文件中遍历这个数组。我不想在每个文件中硬编码为 2,而是想以编程方式获取数组中的元素数量。
解决方案
不要使用原始数组。使用标准容器,如std::vector
or 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
)不包括声明中的大小。
推荐阅读
- flutter - 特定时间本地通知
- php - 如何使用 Ajax、PHP 和 jQuery 将 multipart/form-data 发送到服务器?
- python - 将模块下载到本地文件夹后,如何在没有 pip 的情况下安装 python 模块
- data-structures - 如何在地图中分组?
- python - 如何在不使用正则表达式的情况下检查字符串是否具有某些字符
- ios - 无法通过 Firebase 记录自定义事件,但会记录预定义事件
- node.js - 如何获取使用 Nodejs express 发送请求的客户端的公共 IP 地址?
- sumo - 函数 changeTarget() 它失败了
- json - Bash:如何将数组值添加到 JSON?
- angular - 角度形式“确认密码”显示错误