函数中的矢量参数似乎并不真正适用于输入?

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 是通过引用传递的。在您的代码中,它是按值传递的。