【发布时间】:2016-09-20 02:42:49
【问题描述】:
我有一个数组_data,我正在尝试在某个position 的数组中添加一个数字。 position 索引之后的每个数字都应该向右移动一个索引。我在这样做时在概念上遇到了麻烦。
这是我现在所拥有的:
void list::add(int num, size_t position)
{
for (int i = 0; i < _size; i++)
{
_data[position + i + 1] = _data[position + i];
}
_data[position] = num;
}
例如,假设 num = 9 和 position = 3,数组中的给定值是 {1, 3, 4, 5, 6, 7}。我希望它是{1, 3, 4, 9, 5, 6, 7}。然而,最终发生的事情是,它会抓取已被替换的数字并将其放回数组中。 (例如1, 3, 4, 9, 5, 5, 5}。
【问题讨论】:
-
义人先移
-
使用一个小数组,比如只有两个元素。拿一张纸。用铅笔画两个方格,在每个方格内填上“1”和“2”。那是你的数组有两个值。现在,一次一行地检查你的代码,并在纸上更新数组中的每个值,确切地说你的代码是如何做到的。您应该能够轻松找出哪里出错了。