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.我试图绕过这个问题,我不知道新数组应该有多长.
有没有更好的方法来解决这个问题?
是的,使用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.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |