我在 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/