c++中的数组问题。求解

c++中如何删除数组中特定的值,求大佬帮忙提示一下一下。刚开始学这门语言

给你思路和代码,你先按着思路自己去写,实在写不出来,再来参考代码,这让对你的成长帮助很大!

思路:遍历数组,找到需要移除数值对应数值中的索引位置。然后从索引位置开始遍历数组,将数组索引后面的值往前挪一个位置,以达到覆盖删除效果。

 

代码:

#include <iostream>
using namespace std;

// 移除数组特定的值
bool removeArrayAppointData(int *arrays, int length, int data);


int main() {
	int arrays[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int length = sizeof(arrays) / sizeof(arrays[0]);	// 计算数组的长度
	int data = -1;

	cout << "数组元素:" << endl;
	for (int i = 0; i < length; i++) {
		cout << arrays[i] << ", ";
	}
	cout << endl;

	cout << "请输入需要移除的元素:" << endl;
	cin >> data;

	// 移除指定元素
	removeArrayAppointData(arrays, length, data);
	

	cout << "移除元素后:" << endl;
	for (int i = 0; i < length - 1; i++) {	// 长度length - 1,后续遍历就不会将最后一个数值打印出来,但其还是存在于数组中
		cout << arrays[i] << ", ";
	}
	cout << endl;
	
	return 0;
}

bool removeArrayAppointData(int *arrays, int length, int data) {
	int indexs = -1;	// 存储数值对应数值的索引下标

	// 合法性检查
	if (arrays == NULL || length < 1) {
		cout << "数据不合法!" << endl;
		return false;
	}

	// 寻找数值对应数组的下标
	for (int i = 0; i < length; i++) {
		if (arrays[i] == data) {
			indexs = i;
		}
	}

	// 如果indexs还是等于-1,说明数组中没有与之对应的值
	if (indexs == -1) {
		cout << "没有找到值!" << endl;
		return false;
	}

	// 将数组索引后面的值都往前诺动一个位置,以达到删除效果(弊端:数组最后一个值还是存在的)
	for (int i = indexs; i < length; i++) {
		arrays[i] = arrays[i + 1];
	}

	return true;
}

有不懂的再评论提问!

如果问题解决,请点个采纳,谢谢!

你可以对数组做循环,找到删除元素的下标,找到以后把后面的元素依次往前移一位即可

//移除指定元素:创建一个新数组存放非指定元素
int removeGivenValue(int *pArray, const int nLen, const int target){
    if (pArray == NULL || nLen < 1)
    return 0;
    int nValidLen = 0;
    for (int i = 0; i < nLen; ++i){
        if (pArray[i] == target)
            continue;
        pArray[nValidLen++] = pArray[i];
    }
    return nValidLen;
}

申请

老兔子什么时候跟新博文啊?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

建议看下stl