我需要找到结构数组中的元素数
我有这个结构
struct Features {
int feature1;
string feature2;
string feature3;
string feature4;
bool feature5;
};
然后我把它变成了一个数组
Features *feature = new Features[100];
然后我输入了一些值
for(int i = 0; i < 3; i++)
{
feature[i].feature1 = 5;
feature[i].feature2 = "test";
feature[i].feature3 = "test2";
feature[i].feature4 = "test3";
feature[i].feature5 = true;
}
现在我想得到数组的大小,应该是 3 (2)
我该怎么做呢?
cout << (sizeof feature / sizeof *feature) << endl;
似乎不起作用,因为它打印了不正确的值。 (它继续打印4)
对不起,如果这是一个愚蠢的问题,我还在学习 C++
原文由 jLynx 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,实际上数组的大小是 100,而不是 3,因为您使用
new
分配了一个 100 元素数组。您在数组中初始化 3 个元素的事实并不重要。它仍然是一个 100 个元素的数组。但无论是 3 还是 100,都无所谓。跟踪分配数组的大小由您决定。 C++ 不适合你。
但是,如果您确实希望 C++ 跟踪数组的大小,请使用
std::vector
。这就是它的用途。