将新值插入数组元素并移动其余元素

时间:2013-12-10 13:11:19

标签: c++ arrays

我正在创建一个程序,它可以在数组上添加任何数字然后它就能修改它们(插入,删除)。我想知道的是如何在数组中创建一个新值不修改任何东西。只需创建值并将所有其余部分推送到下一个。例如:插入1 8 //插入只是命令,1是你想要创建新值的地方,8是值本身所以list [1] = 8但我希望已经存在的其余值为1前进(如果它们位于我想要创建新值或高于它的位置(在列表中讨论位置))

完整示例: 列表:

5
6
7
8
9

命令:插入3 10 新名单:

5
6
7
10 //the one that changed,the rest from this point went 1 forward 
8
9

3 个答案:

答案 0 :(得分:4)

你想要的是使用std::vector<int>这样的东西:

std::vector<int> v = {5, 6, 7, 8, 9};
v.insert(v.begin() + 1, 8);   // v[1] now equals 8, everything after push up one
v.erase(v.begin() + 1);       // v is now as it was before above insert
v.insert(v.begin() + 3, 10);  // v[3] is now 10

答案 1 :(得分:1)

一种方法是使用std::vectorinsert()

http://www.cplusplus.com/reference/vector/vector/

http://www.cplusplus.com/reference/vector/vector/insert/

编辑:除非你不能使用STL容器,并且需要使用c风格的数组,在这种情况下它不会那么简单,因为你将无法直接增长它们。

答案 2 :(得分:1)

a 成为数组, 位置 是必须插入值的数组中的索引, value 是值本身。

然后尝试:

int i;
for(i=CURRENT_SIZE_OF_ARRAY-1; i>=positon; --i)
{
   a[i+1] = a[i];
}
a[i]=value;

这样,您可以从末尾移动数组值,以便为新元素腾出空间,然后最终将该元素插入所需的位置。