获取结构中元素的数量

Owe*_*wen 4 c++ struct sizeof data-structures

我有一个结构:

struct KeyPair 
{ 
   int nNum;
   string str;  
};
Run Code Online (Sandbox Code Playgroud)

假设我初始化我的结构:

 KeyPair keys[] = {{0, "tester"}, 
                   {2, "yadah"}, 
                   {0, "tester"}
                  }; 
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*eis 5

如果您正在尝试计算keys阵列的元素数量,您可以这样做sizeof(keys)/sizeof(keys[0]).

关键是结果sizeof(keys)是内存中键数组的大小(以字节为单位).除非元素长度为1个字节,否则这与数组的元素数不同.要获得所需的元素数,需要将字节数除以元素类型sizeof(keys[0])的大小,这将返回数据类型的大小key[0].

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

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