如何在C++中删除小于X的数组中的整数?

Den*_* M. 2 c++ arrays sorting filtering

我发现了PHP的相同问题,我试图在C++中做同样的事情.

我试过以下:

// returns new array with numbers lower then "number", len is set to
// new length.
int * filter(int array[], int &len, int number) {
    int cnt = 0;
    for (int i = 0; i < len; i++) {
        if (array[i] < number) {
            cnt++;
        }
    }
    int *ret = new int[cnt];
    cnt = 0;
    for (int i = 0; i < len; i++) {
        if (array[i] < number) {
            ret[cnt] = array[i];
            cnt++;
        }
    }
    len = cnt;
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

此函数将创建一个整数低于整数的新数组number.我试图绕过这个问题,我不知道新数组应该有多长.

有没有更好的方法来解决这个问题?

Kon*_*ski 5

是的,使用std::vector类型.每次向其推送值时,它都会自动为您处理分配(使用push_back方法).

#include <iostream>
#include <vector>

int main() {
    std::vector<int> a;
    a.push_back(1);
    a.push_back(2);
    for (int value : a) {
        std::cout << value << '\n';
    }
}
Run Code Online (Sandbox Code Playgroud)

避免new语法也是一个好主意,因为它不会自动解除分配,不像std::vector.

此外,虽然这与问题无关,但C++提供的功能可以完成您想要的功能std::copy_if.