gpt4 book ai didi

c++数组无法获得正确的数组

转载 作者:行者123 更新时间:2023-11-28 02:48:16 24 4
gpt4 key购买 nike

我有数组 A[9]= {1,2,3,4,5,6,7,8,9} 我需要删除不除以 2 的数字. 我尝试做的代码:

int main()
{
int n;
ifstream fd(Cdf);
fd>>n; // read how many numbers are in the file.
int A[n];
for(int i = 0; i < n; i++)
{
fd >> A[i]; //read the numbers from file
}
for(int i = 0; i < n; i ++) // moving the numbers.
{
if(A[i] % 2 !=0)
{
for(int j = i; j < n; j++)
{
A[i] = A[i+1];
}
}
}
fd.close();
return 0;
}

但我得到像 224466888 这样的数字。我需要做什么才能获得 2、4、6、8?

我需要删除同一个数组中的数字。

最佳答案

首先,您应该将 std::vector 用于动态大小的数组。其次,要删除 vector 中偶数的数字,您可以这样做:

std::vector<int> inf = {12,0,5,6,8};
auto func = [](int i){return i % 2 != 0;};
inf.erase(std::remove_if(inf.begin(),inf.end(),func), inf.end());

编辑:

好的,所以你仍然可以在没有 std::vectors 的情况下这样做,但它会更丑陋:

#include <algorithm>

int res[] = {2,5,9,8,6,7};
int size = 6;
auto func = [](int i){return i % 2 != 0;};
int new_size = std::remove_if(res,res + size, func) - res;

你想要的所有数据都在 [0, new_size[ 范围内,你数组的另一部分现在是垃圾。

关于c++数组无法获得正确的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com