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