gpt4 book ai didi

c++ - 为什么我不能修改通过引用传递的 vector ?

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:49 24 4
gpt4 key购买 nike

这是我第一次尝试对 vector 使用按引用传递。我以为我做对了,但我在尝试分配 a[0] = 5 的行上收到 error: no viable overloaded '='

void BubbleSort(vector<int> *a) {
int n = a->size(), numberOfSwaps = 0;
if (n > 0)
a[0]= 5;
}


int main(){
// input size and array
int n;
cin >> n;
vector<int> a(n);
for(int a_i = 0;a_i < n;a_i++){
cin >> a[a_i];
}
// sort
BubbleSort(&a);
// print
for (auto i = a.begin(); i != a.end(); ++i)
cout << *i << ' ';

return 0;
}

编辑:

既然我已经被告知我实际上是通过指针传递的,我的问题是,我应该通过引用还是通过指针传递 vector ,还是这无关紧要?

最佳答案

vector<int> *不是引用。 vector<int> *是一个指针。

要么更改函数以将引用作为参数,要么使用 (*a)[0]=5。

但是,在您修复此程序使其编译后,当您运行它时,由于访问 vector 的不存在的内容而导致未定义的行为,它会立即崩溃。您在此代码中还有其他多个错误需要修复。

关于c++ - 为什么我不能修改通过引用传递的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805279/

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