为什么我不能修改通过引用传递的向量?
Why can't I modify a vector that I pass by reference?
这是我第一次尝试将按引用传递与向量一起使用。我以为我做对了,但我在试图分配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<int> *
不是引用。 vector<int> *
是一个指针。
更改函数以将引用作为参数,或使用 (*a)[0]=5。
但是,在修复此程序以使其编译后,当您运行它时,由于访问矢量中不存在的内容而导致未定义的行为,它将立即崩溃。在此代码中,您还有其他多个 bug 需要修复。
你不是通过引用传递,而是在传递指针。您需要先取消引用指针,然后才能访问运算符 []。
(*a)[0] = 5;
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 创建引用向量的优雅方式
- C++重新引用向量中的值
- 很好的语法来获取对向量/数组数据的大小引用?
- 如何返回向量的常量引用?
- 取消引用向量时出现问题
- 为什么通过 vector<reference_wrapper> 的元素删除引用的值<T>不会使向量无效?
- 通过引用传递向量是请求 std::分配器
- 从类返回引用向量
- 返回两个向量 – 使用引用还是元组?
- 在C++中通过引用传递向量数组
- 引用向量中的特定索引
- 如何告诉自动推断向量<bool>元素的非引用类型
- 如何在方法主体中返回声明向量的引用?
- 向量引用C++
- 在向量引用上调用 vector::reserve()
- 如何创建一个同时接受数组和向量引用的函数模板
- 如何做列表的向量引用列表中的值
- c++向量引用转换
- 最方便的表示向量引用的向量的方法