传递给函数时找不到c ++向量?
Posted
技术标签:
【中文标题】传递给函数时找不到c ++向量?【英文标题】:c++ vector not being found when passed to function? 【发布时间】:2019-07-24 17:35:07 【问题描述】:编辑:显然这段代码很好,但由于某种原因不适用于 Atom 的内置 c++ 编译器。
所以我试图在 C++ 中创建一个程序,该程序接受一个数组,然后返回该数组中所有数字的平均值。从那以后,我了解到任何数组都传递给函数“衰减”为指针,并指向向量的方向。但是,我被困在这段代码上,它似乎没有打印出任何东西。我已经尝试通过在 for 循环期间打印它来进行调试,但它仍然没有打印任何东西。这是否意味着它根本没有找到向量大小,只是在它开始之前结束?它没有抛出任何错误,所以我不确定。如何让这个输出这个向量的平均值?提前谢谢!
#include <iostream>
#include <vector>
using namespace std;
vector<int> arr = 1, 2, 3, 4, 5, 6;
void avg(vector<int> array)
double total = 0;
for (int i = 0; i < array.size(); i++)
total += array[i];
double average = total/array.size();
cout << average;
main()
avg(arr);
【问题讨论】:
您的代码对我来说似乎没问题。但是可以通过引用传递来改进它,比如void avg(vector<int>& array)
可以确认,您的代码在我的电脑上运行良好
你需要一个 main 的返回类型,int main()
否则代码对我来说很好。
除了 int main
中缺少的 int 之外,它应该可以工作
我得到3.5
作为输出,对我来说似乎没问题。
【参考方案1】:
您的输出流可能已缓冲。尝试在末尾添加换行符,如下所示:
cout << average << endl;
【讨论】:
感谢您的建议!这有帮助,但我发现 Atom 可能有些问题。 这可能只是 VS 和 Atom 之间的底层实现差异。更多信息:en.cppreference.com/w/cpp/io/manip/endl。如果您是从命令提示符运行的,那么您应该在程序退出时看到一些输出;如果不是,那将无法解释。【参考方案2】:Below code is working for me, I guess you forgot to pause the result screen
#include <iostream>
#include <vector>
using namespace std;
vector<int> arr = 1, 2, 3, 4, 5, 6;
void avg(vector<int> array)
double total = 0;
for (int i = 0; i < array.size(); i++)
total += array[i];
double average = total / array.size();
cout << average;
int main()
avg(arr);
system("pause");
return 0;
【讨论】:
感谢您的建议!我发现 Atom 可能有些问题,因为代码在 Visual Studio 中运行良好。以上是关于传递给函数时找不到c ++向量?的主要内容,如果未能解决你的问题,请参考以下文章