我有一个数组_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
}。
答案 0 :(得分:0)
取决于变量_data
的类型:
如果是数组:
for (std::size_t i = _size - 1; i != position; --i)
{
_data[i] = _data[i - 1];
}
_data[position] = num;
如果是矢量:
_data.insert(_data.begin() + position, num);
无论如何,建议使用std::vector
代替原始数组,不建议在变量名的开头使用下划线