gpt4 book ai didi

c++ - 灵活数组(或建议另一种数据结构)

转载 作者:搜寻专家 更新时间:2023-10-30 23:58:19 25 4
gpt4 key购买 nike

我需要以能够灵活重新排列的方式配置一维数组,例如将所有元素推回 k 次每个下一个 n 元素,然后返回到以前的结构(将删除的元素带回来)。下面是一个例子:

p[10]={        //this is a one-dimensional array
1, 2, 3, 4, 5
4, 5 ,6, 7, 8}


//push each 'row' 2 units back, every 5 elements.
//"Row" here refers to the next nth element, here 5.

<del>, <del>, 3, 4, 5
<del>, <del> ,6, 7, 8


//New structure
<reserved>, <reserved>, 3, 4, 5
<reserved>, <reserved>, 6, 7, 8

//This is how it should look like in terms of data relevance,
//with the reserved spaces not shown.

3, 4, 5
6, 7, 8

现在 p[0] 应该是 3,并且 p[3]=6

最简单的方法是用新元素创建一个新数组,但我需要保留旧数组并在同一个数组上重复执行这些操作,然后将其返回到其原始结构。我认为可能有一种使用指针的方法,也许是指针数组,但我不确定。如果有一种数据结构可以让我轻松完成此操作,请指出它。

最佳答案

您可以为此使用vector。它有push_backpop_backinserterase等一些方法。在这里查看更多信息: http://www.cplusplus.com/reference/vector/vector/

vector<int> myArray;

for(int i=0;i<8;i++)
{
myArray.push_back(i+1);//initialize
}

for(int i=0; i<8; i++)
{
//do something for finding the first 2 of each 5, (you can use mod 5)
myArray.erase(myvector.begin()+index) //removing
}

关于c++ - 灵活数组(或建议另一种数据结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20899728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com