问题:我想得到一个数组A[6] = {6, 5, 4, 3, 2, 1}
为A[6] = {5, 3, 1, 1, 1, 1}
。换句话说 - “删除”从0开始的每个第二个值并将所有其他值向左移。如何从C++数组中删除每个第二个值而不复制数组?
我尝试:
为了做到这一点,我会用这个代码,其中一个 - 的阵列A(与未删除的元素的部分),IND的相关部分的长度 - 值的索引我想删除。
for (int j = ind; j < n; j++)
A[j] = A[j+1];
但是,我不能得到这个工作,用这样的代码:
void deleting(int A[], int& a, int ind){
for (int j = ind; j < a; j++)
A[j] = A[j+1];
a--;
}
int A[6] = {6, 5, 4, 3, 2, 1};
a = 6
for (int i = 0; i < a; i+=2)
deleting(A, a, i);
运行此代码我得到A[6] = {5, 4, 2, 1, 1507485184, 1507485184}
后。所以,它删除了索引0,3的元素。为什么它删除了第三个索引?
你必须使用C数组?你不能使用矢量吗? –
你不能从c样式数组中删除条目。你应该使用'std :: vector'或者创建一个新的数组,并且包含所需的元素 – user463035818
如果删除每个第二个元素,则结果数组中的条目是无意义的。 – Philipp