C++;数组排序,如何将-1放在数组末尾? 我目前正在研究一个C++项目。我被一个我必须写的函数卡住了。函数名为remove。该函数的目的是通过将所有元素移回一个位置来删除列表中给定索引处的值,-1替换列表末尾的元素。我已经完成了这个函数的移位部分,我只是停留在如何将-1放在数组的末尾。 这是我的密码: void remove(int vals[], int sz, int index) { for(int i = index ; i < (sz-1); ++i) { vals[i] = vals[i+1]; } vals[sz - 1] = -1; } void删除(int-vals[],int-sz,int-index) { 对于(int i=索引;i
如果我正确理解您的问题,我相信您需要:C++;数组排序,如何将-1放在数组末尾? 我目前正在研究一个C++项目。我被一个我必须写的函数卡住了。函数名为remove。该函数的目的是通过将所有元素移回一个位置来删除列表中给定索引处的值,-1替换列表末尾的元素。我已经完成了这个函数的移位部分,我只是停留在如何将-1放在数组的末尾。 这是我的密码: void remove(int vals[], int sz, int index) { for(int i = index ; i < (sz-1); ++i) { vals[i] = vals[i+1]; } vals[sz - 1] = -1; } void删除(int-vals[],int-sz,int-index) { 对于(int i=索引;i,c++,arrays,function,C++,Arrays,Function,如果我正确理解您的问题,我相信您需要: void remove(int vals[], int sz, int index) { //I altered your loop here as the line inside it would have accessed past the //end your array. I am assuming sz is the number of elements in the array for(int i = index ; i <
void remove(int vals[], int sz, int index)
{
//I altered your loop here as the line inside it would have accessed past the
//end your array. I am assuming sz is the number of elements in the array
for(int i = index ; i < sz - 1; ++i)
{
vals[i] = vals[i + 1];
}
//This sets the last element in your array to -1
vals[sz - 1] = -1;
}
void删除(int-vals[],int-sz,int-index)
{
//我在这里改变了你的循环,因为它里面的线会通过
//结束数组。我假设sz是数组中的元素数
对于(int i=索引;i
希望这有帮助
编辑:正如其他人所说,如果要添加和删除元素,最好使用std::vector之类的STL容器,而不是C样式的数组。您确定
i+1
在整个循环中都有效吗?Q:您确定要从索引开始吗?或者索引-1
?问:你肯定想在sz之前停下来。也许i<(sz-1)
?最后,为什么不仅仅是索引[sz]=-1
?或者索引[sz-1]
(取决于您如何定义“sz”)?为什么需要将所有元素向后移动一个以删除一个元素?这是一个相当误导的目的。如果您有足够的知识,您最好使用动态分配的数组并删除元素。这非常有效!非常感谢你的帮助。令人惊讶的是,这么简单的事情居然能解决它。我还是个初学者。非常感谢。