函数中的矢量参数似乎并不真正适用于输入?
Vector parameter in a function doesn't seem to actually apply to input?
我有一个名为 intVec 的向量变量,我有一个名为 pushBack 的函数,它像 intVec 一样接受整数类型的向量,但是当我将该向量实际传递到函数中以便 push_back x 参数,似乎什么也没有发生。
intVec.size()
的预期输出是 1
intVec.size()
给出的输出是 0
我真的很困惑我在这里做错了什么。
也许我遗漏了一些非常明显的东西。
#include <vector>
std::vector<int> intVec;
void pushBack(int x, std::vector<int> vec) {
vec.push_back(x);
}
int main() {
pushBack(10, intVec);
std::cout << intVec.size();
}
那是因为你传递的是向量by value
而不是by reference
(或指针)。
这意味着,当您调用该函数时,您调用 'push_back' 的向量实际上是原始向量的一个独立副本,它在离开函数时被释放。
试试这个 header:
void pushBack(int x, std::vector<int> &vec) {
vec.push_back(x);
}
&
告诉编译器 pass by reference
,这意味着无论你对 vec
做什么,你也会对你最初传递的向量做。
将pushBack写成如下:
void pushBack(int x, std::vector<int>& vec) {
vec.push_back(x);
}
唯一的区别是这里的 vec 是通过引用传递的。在您的代码中,它是按值传递的。
我有一个名为 intVec 的向量变量,我有一个名为 pushBack 的函数,它像 intVec 一样接受整数类型的向量,但是当我将该向量实际传递到函数中以便 push_back x 参数,似乎什么也没有发生。
intVec.size()
的预期输出是 1
intVec.size()
给出的输出是 0
我真的很困惑我在这里做错了什么。
也许我遗漏了一些非常明显的东西。
#include <vector>
std::vector<int> intVec;
void pushBack(int x, std::vector<int> vec) {
vec.push_back(x);
}
int main() {
pushBack(10, intVec);
std::cout << intVec.size();
}
那是因为你传递的是向量by value
而不是by reference
(或指针)。
这意味着,当您调用该函数时,您调用 'push_back' 的向量实际上是原始向量的一个独立副本,它在离开函数时被释放。
试试这个 header:
void pushBack(int x, std::vector<int> &vec) {
vec.push_back(x);
}
&
告诉编译器 pass by reference
,这意味着无论你对 vec
做什么,你也会对你最初传递的向量做。
将pushBack写成如下:
void pushBack(int x, std::vector<int>& vec) {
vec.push_back(x);
}
唯一的区别是这里的 vec 是通过引用传递的。在您的代码中,它是按值传递的。