删除数组中的某个数字

来源:互联网 发布:淘宝上的红酒是真的吗 编辑:程序博客网 时间:2024/05/18 00:11
//这个程序是今天多益网络的编程题,很简单的删除一个数组中值为2的元素//看着很简单,但是我没有做出来,本来准备用erase(),发现自己并不了解erase()//经过百度等手段我知道了erase()这个函数删除了某个元素返回指向下一个元素的迭代器//来写个程序验证一下#include<iostream>#include<vector>using namespace std;int main(){    vector<int> input;    int data;    int k;    cin >> k;    while (cin >> data)    {        input.push_back(data);    }    for (vector<int>::iterator iter = input.begin(); iter != input.end();)    {        if (*iter == k)            iter = input.erase(iter);//注意是返回下一个,所以分为两种可能性就是等的时候删除移动,还是不等直接移动        else            iter++;    }    for (unsigned int i = 0; i < input.size(); i++)        cout << input[i];}//如果用c语言写怎么写#include<stdio.h>#include<string.h>int main(){    int input[1000];    memset(input, 0, sizeof(input));    int data=0;    int i = 0;    int evalue = 2;    while (scanf_s("%d", &data) != EOF)    {        input[i++] = data;    }    i--;    for (int k = 0; k <= i;)    {        if (input[k] == evalue)        {            if (k == i)            {                i--;                break;            }            for (int j = k; j <= i - 1; j++)            {                input[j] = input[j + 1];//遇到一样的值就把后面的值往前移动            }            i--;//都移动了一个位置,所以个数也会减少        }        else            k++;    }    for (int j = 0; j <= i; j++)        printf("%d", input[j]);    printf("\n");}