【发布时间】:2016-08-03 20:56:09
【问题描述】:
我们不允许使用向量。
另一个有问题的菜鸟。我正在尝试查找初始化为 50 大小的动态 int 数组的索引。我们只能使用动态 int 数组。
例如,我只在这个数组中输入 10 个整数:1 9 5 3 8 0 8 2 0 6
数组的其余部分为 NULL。目标是保留输入到此数组中的整数值并将它们放入输出文件中。所以我想要的整数数组的大小是 9。但是当我执行以下操作时:
int index = 0;
while (intArray[index])
{
index++;
}
它告诉我索引是 5,因此只有 5 个值被复制到输出文件中。我知道这是因为数组中的 0。如果数组中没有 0,则结果按预期出来。如何绕过这个,以便索引正确反映为 9 并且所有值都被正确复制?感谢您的意见!
【问题讨论】:
-
我想你一开始构造数组时不能保持大小?
-
您可以使用自己的哨兵值作为数组末尾的标记,例如
-1或0x8000000。 -
"数组的其余部分为 NULL" 这是什么意思?也许展示你如何初始化数组会更容易。
-
C 字符串可能以 null 结尾...但该约定之所以有效,只是因为它假定 null 字符永远不会是字符串中的合法字符。如果不决定永远不会成为数据一部分的哨兵值,那么您通常不能使用这种方法,但可以用您使用的类型表示。但是在数组中搜索哨兵以获取长度并不是很有效……通常最好用另一个变量来跟踪它。
-
我们不允许使用向量。 -- 但是没有什么能阻止你创建一个包含指针、大小成员和必要的成员函数的简单类或结构.这就是你阻止这些限制的方式——创建你自己的“向量”类,甚至是一个最小的类。