c++ - 获取结构中元素的数量

标签 c++ data-structures struct sizeof

我有一个结构:

struct KeyPair 
{ 
   int nNum;
   string str;  
};

假设我初始化了我的结构:

 KeyPair keys[] = {{0, "tester"}, 
                   {2, "yadah"}, 
                   {0, "tester"}
                  }; 

我将创建多个不同大小的结构实例。因此,为了能够在循环中使用它并读取它的内容,我必须获取结构中的元素数量。如何获取结构中的元素数量?在这个例子中,我应该得到 3,因为我初始化了 3 对。

最佳答案

如果您正在尝试计算 keys 数组的元素数量,您可以简单地执行 sizeof(keys)/sizeof(keys[0])

重点是 sizeof(keys) 的结果是内存中键数组的字节大小。这与数组的元素数不同,除非元素的长度为 1 个字节。要获得元素的数量,您需要将字节数除以元素类型的大小,即 sizeof(keys[0]),这将返回 的数据类型的大小键[0]

这里的重要区别是理解 sizeof() 对数组和数据类型的行为不同。您可以将两者结合起来以实现您的需要。

http://en.wikipedia.org/wiki/Sizeof#Using_sizeof_with_arrays

关于c++ - 获取结构中元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275921/

相关文章:

c++ - 将 "this"添加到 C++ 类实例化的 vector 中

C++ 优先字典

java - 从已排序的双向链表创建二叉搜索树

深度优先搜索的java实现

C:简单的程序编译正常但在某一点崩溃

c++ - 如何比较 C++ 中的泛型结构?

c++ - 基类可以声明一个虚方法但不定义它吗?仍然在派生类中定义

c++ - 如果我知道每个索引处的字符,如何创建字符串(在C++中)

c++ - 预先设置 C++ 代码的执行时间

c - 为什么使用 struct 可以工作而 typedef struct 不行?