C++ 从数组中提取对数
各位晚上好 我目前在从数组中提取对号时遇到困难。我有以下代码:C++ 从数组中提取对数,c++,arrays,pointers,C++,Arrays,Pointers,各位晚上好 我目前在从数组中提取对号时遇到困难。我有以下代码: #include <iostream> using namespace std; int *paire(int *d, int length) { int counter = 0; int position = 0; for (int i=0; i<length; i++) { if (d[i] % 2 ==0) counter++; }
#include <iostream>
using namespace std;
int *paire(int *d, int length) {
int counter = 0;
int position = 0;
for (int i=0; i<length; i++) {
if (d[i] % 2 ==0)
counter++;
}
int *k = new int[counter];
for (int i=0; i<length; i++) {
if (d[i] % 2 ==0) {
k[position] = d[i];
position++;
}
}
return k;
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int *array1 = paire(b,8);
for (int i=0; i<5; i++) { // how can I point here to the counter in paire() ?
cout<<array1[i];
}
delete[] array1;
return 0;
}
#包括
使用名称空间std;
整数*对(整数*d,整数长度){
int计数器=0;
int位置=0;
对于(int i=0;i而言,似乎需要返回两个单独的值:数组b中偶数的数目,以及专门存储这些偶数的新分配内存的地址
因为您不能返回多个变量,所以对代码进行最小修改的解决方案如下
int *paire(int *d, int length, int& counter) {
counter = 0;
// rest of your function remains unchanged
// ...
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int evenNumbers;
int *array1 = paire(b,8, evenNumbers);
for (int i=0; i<evenNumbers; i++) {
cout<<array1[i];
}
delete [] array1;
return 0;
}
int*paire(int*d,int-length,int&counter){
计数器=0;
//函数的其余部分保持不变
// ...
}
int main(){
int b[8]={1,2,3,4,5,6,7,8};
整数;
int*array1=成对(b,8,偶数);
对于(int i=0;i而言,似乎需要返回两个单独的值:数组b中偶数的数目,以及专门存储这些偶数的新分配内存的地址
因为您不能返回多个变量,所以对代码进行最小修改的解决方案如下
int *paire(int *d, int length, int& counter) {
counter = 0;
// rest of your function remains unchanged
// ...
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int evenNumbers;
int *array1 = paire(b,8, evenNumbers);
for (int i=0; i<evenNumbers; i++) {
cout<<array1[i];
}
delete [] array1;
return 0;
}
int*paire(int*d,int-length,int&counter){
计数器=0;
//函数的其余部分保持不变
// ...
}
int main(){
int b[8]={1,2,3,4,5,6,7,8};
整数;
int*array1=成对(b,8,偶数);
对于(int i=0;i,您可以通过分配到长度
的函数并通过输出参数返回计数器
来进一步简化您的函数
#include <iostream>
using namespace std;
int *paire(int *d, int length, int &counter) {
counter = 0;
int *k = new int[length]; // allocate for the maximum memory
for (int i = 0; i < length; ++i) {
if (d[i] % 2 == 0) {
k[counter++] = d[i];
}
}
return k;
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int counter = 0;
int *array1 = paire(b,8, counter);
for (int i=0; i<counter; i++) { // how can I point here to the counter in paire() ?
cout<<array1[i] << " ";
}
delete [] array1;
return 0;
}
#包括
使用名称空间std;
整数*对(整数*d,整数长度,整数和计数器){
计数器=0;
int*k=new int[length];//分配最大内存
对于(int i=0;i 对于(int i=0;i,您可以通过分配到长度
的函数并通过输出参数返回计数器
来进一步简化您的函数
#include <iostream>
using namespace std;
int *paire(int *d, int length, int &counter) {
counter = 0;
int *k = new int[length]; // allocate for the maximum memory
for (int i = 0; i < length; ++i) {
if (d[i] % 2 == 0) {
k[counter++] = d[i];
}
}
return k;
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int counter = 0;
int *array1 = paire(b,8, counter);
for (int i=0; i<counter; i++) { // how can I point here to the counter in paire() ?
cout<<array1[i] << " ";
}
delete [] array1;
return 0;
}
#包括
使用名称空间std;
整数*对(整数*d,整数长度,整数和计数器){
计数器=0;
int*k=new int[length];//分配最大内存
对于(int i=0;i 对于(int i=0;ii如果您使用的是std::vector
而不是裸指针,那么您的所有问题(包括内存泄漏)都会消失。不要害怕。使用std::vector
比原始指针“我有困难”更容易而不是更难不是问题描述。有什么困难?哪些是您不需要发生的,哪些是错误发生的?请阅读,如果您必须new[]
,请同时delete[]array1;
如果您使用的是std::vector
而不是裸指针,那么您的所有问题(包括内存泄漏)都会消失。不要害怕。使用std::vector
比原始指针“我有困难”更容易而不是更难不是问题描述。有什么困难?哪些是您不需要发生的,哪些是错误发生的?请阅读,如果您必须new[]
,请同时delete[]array1;