C++ 对数组中存储的元素进行计数

C++ 对数组中存储的元素进行计数,c++,arrays,C++,Arrays,我真的需要一些帮助。。。我详细说明了我的问题,我需要一个特定类型的数组,但在使用for结构从其他数组检索值之前,我不知道它的长度。事实上,我不想再花时间通过几个循环,我想知道最好的方法。我是否应该使用堆栈和计数器,并在填充后实例化并填充数组 RelAttr *tab; //need to initialize it but how /*several for loops retrieving values*/ tab[i] = value; /*end for loops*/ 显然,这段

我真的需要一些帮助。。。我详细说明了我的问题,我需要一个特定类型的数组,但在使用for结构从其他数组检索值之前,我不知道它的长度。事实上,我不想再花时间通过几个循环,我想知道最好的方法。我是否应该使用堆栈和计数器,并在填充后实例化并填充数组

RelAttr *tab;
//need to initialize it but how
/*several for loops retrieving values*/
   tab[i] = value;
/*end for loops*/
显然,这段代码是不完整的,但它是如何完成的。我知道我不能在没有指定数组长度之前做作


感谢您的帮助

只需使用
std::vector

std::vector<RelAttr> vec;

vec.push_back(a);
vec.push_back(b);
...

但是,只有当您需要满足遗留的C API时,才应该这样做。

只需使用
std::vector

std::vector<RelAttr> vec;

vec.push_back(a);
vec.push_back(b);
...

<>但是,如果你有一个你需要满足的遗留C API,你应该只做这个。

,因为这是C++,建议使用(<代码> STD::vector < /代码>),因为不需要事先知道对象的数量。你可以根据需要添加新的元素。

,因为这是C++,建议使用(<代码> STD::vector < /代码>),因为不需要事先知道对象的数目。您可以根据需要使用添加新元素。

如果在编译时不知道长度,可以使用


函数
malloc
、运算符
new
vector
或其他类型的容器

如果您在编译时不知道长度,可以使用

函数
malloc
、运算符
new
vector
或其他类型的容器最简单的方法(假设没有异常性能关键)是使用std::vector组合值,并(如果需要)将vertor转换为数组。有点像

std::vector<RelAttr> vec;
...
vec.push_back(value);
...
最简单的方法(假设没有异常的性能关键)是使用std::vector来组合值,并(如果需要)将vertor转换为数组。有点像

std::vector<RelAttr> vec;
...
vec.push_back(value);
...

由于我最终需要一个数组来传递给一个函数,因此转换将是“复制”数组中的向量?参见@OliCharlesworth答案,他提供了一个解决方案。或者,您可以将
向量
复制到数组中,但似乎效率很低。因为我需要一个数组来最终传递给函数,所以转换将是在最后“复制”数组中的向量?请参见@OliCharlesworth答案,他提供了一个解决方案。或者,你可以将
向量
复制到一个数组中,但是看起来效率很低。好的,这正是我需要的,而且它是连续的,这有助于。。。是的,我需要一个原始数组。。。因为这是一个要求。nonsense@getmax0注意,在旧的C++标准中,似乎没有任何保证:一个STD::向量在内存中连续存储东西(例如,见)GETMAX0,另一个注意事项,向量将拥有内存,所以不要让它超出范围,而你需要数组指针是有效的。好,我需要的,由于它是连续的,这有助于。。。是的,我需要一个原始数组。。。因为这是一个要求。nonsense@getmax0注意,在旧的C++标准中,似乎没有任何保证:一个STD::向量在内存中连续地存储东西(例如,见)GETMAX0,另一个注意事项,向量将拥有内存,所以当它需要数组指针有效时,不要让它超出范围。