gpt4 book ai didi

c++ - `error: invalid initialization of non-const reference` 通过引用传递指针

转载 作者:行者123 更新时间:2023-11-30 05:12:33 24 4
gpt4 key购买 nike

我正在尝试实现合并排序算法,但我不明白这个错误:

error: invalid initialization of non-const reference of type ‘int*&’ from an rvalue of type ‘int*’
Mergesort (v, 0, TAM - 1);
___________________^

note: initializing argument 1 of ‘void Mergesort(int*&, int, int)’
void Mergesort (int *&v, int ini, int fin);
^

我的代码的相关部分:

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

void Mergesort (int *&v, int ini, int fin);
void Fusion (int *&v, int ini, int centro, int fin);

int main(){
const int TAM = 20;
int v[TAM];

time_t t;
srand ((int) time(&t));

const int MIN = -100, MAX=100, NUM_VALORES = MAX-MIN+1;

for (int i = 0; i < TAM; i++){
v[i] = (rand() % NUM_VALORES) + MIN;

}

...

Mergesort (v, 0, TAM - 1);

...

return 0;
}

void Mergesort (int *&v, int ini, int fin){
int centro;
if (ini < fin){
centro = (ini + fin) / 2;
Mergesort (v, ini, centro);
Mergesort (v, centro + 1, fin);
Fusion (v, ini, centro, fin);
}
}

void Fusion (int *&v, int ini, int centro, int fin){
int aux[fin - ini + 1];
int h, i, j, k;

h = ini;
i = ini;
j = centro + 1;

while ( (i <= centro) && (j <= fin) ){
if (v[i] <= v[j]){
aux[h] = v[i];
i++;
}else{
aux[h] = v[j];
j++;
}
h++;
}

if (i > centro){
for (k = j; k <= fin; k++){
aux[h] = v[k];
h++;
}
}else{
for (k = i; k <= centro; k++){
aux[h] = v[k];
h++;
}
}

for (k = ini; k <= fin; k++){
v[k] = aux[k];
}
}

我知道此站点中存在关于类似错误的问题,但我无法解决我的问题。

最佳答案

我在您的 Mergesort(int*&, int, int) 中用 * 替换了 *& 以使其成为 Mergesort(int*, int, int) 并且这对我有用。

关于c++ - `error: invalid initialization of non-const reference` 通过引用传递指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44473504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com