C++ C++;从函数到主函数调用向量

C++ C++;从函数到主函数调用向量,c++,vector,C++,Vector,我正在尝试将大量值读入特定函数中的向量,然后将其调用到main中以获得平均值。我的readInput工作得很好。但我相信 当我不能通过引用传递向量时,我的main函数返回0,因此你的函数只将值存储在main中向量的副本中 int readInput(vector<int>& vect); int读取输入(向量和向量); 这告诉您的程序通过引用传递向量,这意味着在函数中修改的任何内容都会直接修改main中的向量。如果你是新手,请查看解释引用和复制之间的区别。你需要将向量作为

我正在尝试将大量值读入特定函数中的向量,然后将其调用到main中以获得平均值。我的readInput工作得很好。但我相信
当我不能通过引用传递向量时,我的main函数返回0,因此你的函数只将值存储在main中向量的副本中

int readInput(vector<int>& vect);
int读取输入(向量和向量);

这告诉您的程序通过引用传递向量,这意味着在函数中修改的任何内容都会直接修改main中的向量。如果你是新手,请查看解释引用和复制之间的区别。

你需要将向量作为引用或指针传递。该函数只创建当前通过值传递的向量的副本,并对其进行操作

将函数签名更改为

int readInput(vector<int>& vect)

尽管其他人已经提到了通过引用传递向量的可能性,但我认为在这种情况下我不会这么做。我想我应该从函数中返回向量。我还将文件名传递给函数:

std::vector<int> values = readInput("TopicFin.txt");
当然,考虑到这是多么简单,我想知道它是否值得拥有一个单独的函数,比如
readInput

为了求和这些值,我将使用
std::accumulate

int total = std::accumulate(data.begin(), data.end(), 0);

是的,就是这样。我真不敢相信我没有想到会被引用。我的朋友。非常感谢。
sum = readInput(&values);
std::vector<int> values = readInput("TopicFin.txt");
std::vector<int> data{std::istream_iterator<int>(infile),
                      std::istream_iterator<int>()};
int total = std::accumulate(data.begin(), data.end(), 0);