假设我有一个数组,定义为
int arr[10];
我希望逐步填充这个数组(假设没有用完为数组分配的内存),根据表格的循环
for(int i = 0; i < some_number; i++)
if(some_condition)
add_element_to_arr
最好的方法是什么? 我能想到的两种方法是:1)使用辅助变量来记住存储的值的数量,或2)使用指针来做同样的事情。
这样做的首选/标准/传统方式是什么?
此外,必须对多个数组执行此类操作,要记住已向每个数组添加了多少值,必须为每个数组使用辅助变量。 处理这个问题的首选方法是什么?
答案 0 :(得分:5)
您可以使用pos
这样的变量:
for(int i = 0, pos = 0; i < some_number && pos < 10; i++)
if(some_condition)
arr[pos++] = i;
在这种情况下无需使用指针。
<强>更新强>:
使用多个数组(不同大小),您可以创建一个带有指向数组的指针和当前位置的结构,这样两个值始终保持在一起:
struct arr_data {
int *arr;
int current_pos;
}
也可以添加一个尺寸:
struct arr_data {
int *arr;
int size; // or unsigned int or size_t
int current_pos; // or unsigned int or size_t
}
然后,您可以根据实现创建这些结构的数组。
答案 1 :(得分:1)
如果你想在你的程序中做一些标准,你可以使用类似的东西:
struct progressiveArr{
int elements[10];
int size;
}
and then:
for(int i = 0; i < some_number i++)
if(some_condition)
{
arr.elements[arr.size++]=i;
}