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

标签 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;
}

此函数将创建一个新数组,其中包含小于整数number的整数。我试图绕过我不知道新数组应该有多长的问题。

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

最佳答案

是的,使用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';
    }
}

避免使用 new 语法也是一个好主意,因为它不会自动释放,与 std::vector 不同。

此外,虽然这与问题无关,但 C++ 提供了一个可以执行您想要的功能的函数,该函数已称为 std::copy_if .

关于c++ - 如何在 C++ 中删除数组中小于 X 的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48989014/

相关文章:

c++ - 使用宿主 C++ 应用程序编译 Lua 源代码

c++ - 在 boost::asio::io_service 上调用运行时崩溃

php - 需要有关 mysql_fetch_array() 错误的帮助吗?

javascript - 了解 React 服务器端渲染中使用 .dispatch 和箭头函数链接的 .map 和 .filter

java - 按行对矩阵进行排序并保留索引

python - 要添加到新列表 Python/Django 中的特定元素排序

c++ - 通过管道将自定义 stdin 传输到 C++ 中的系统调用

c++ - 使用自动参数从 lambdas 返回值

c++ - 从数组构造 vector

r - 如何在 R 中对列表列表进行排序?