c++里如何删除数组中的元素

 我来答
tattackor
推荐于2018-02-27 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:883万
展开全部

1、只要将删除后的数据元素像前移动一位即可。

2、例程:

#include <stdio.h>
// 删除长度为len的数组dat中索引为idx的元素。
void remove(int *dat, int *len, int idx)
{
    (*len)--;
    if (idx < 0 || idx >= *len)
        return;
    for (int i = idx; i < *len; i++)
        dat[i] = dat[i+1];
}
void output(int *dat, int len)
{
    for (int i = 0; i < len; i++)
        printf("%d ", dat[i]);
    printf("\n");
}
int main()
{
    int a[10]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, len = 10;
    remove(a, &len, 5);
    output(a, len);
    remove(a, &len, 2);
    output(a, len);
    return 0;
}
横断天涯海脚
2011-03-11 · TA获得超过131个赞
知道答主
回答量:85
采纳率:0%
帮助的人:60.3万
展开全部
静态数组的存储空间是固定的,不能改变,如果你删除了元素,只要把后面的元素往前移就行了,剩余的空间可以不管了。
动态数组的话(new分配)其实也不能改变数组大小,只是把指针指向了另外分配的空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友801b91b
推荐于2017-11-24 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1680万
展开全部
静态定义的数组是不能改变长度的
除非是动态new动义

动态数组delete 掉那个空间就可以删除那个元素了

希望对你有用
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琛琦鹏
2015-09-22 · TA获得超过1755个赞
知道大有可为答主
回答量:2136
采纳率:84%
帮助的人:530万
展开全部
#include<iostream.h>
void main()
{
char a[5]="cjdh";
int i=0;
cout<<a<<'\n';
cout<<"删除‘j’:\n";
for(i=1;i<5;i++)
a[i]=a[i+1];
cout<<a<<'\n';

}
这样可以吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuzongtang
2011-03-11 · TA获得超过723个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:334万
展开全部
数组中的元素前移或后移覆盖。。要跟踪数组长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式