添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
vector arr(n); cout<<"Please input"<>arr[i]; cout<<"Average = "<< average(arr)< 以上这个失败的代码

double中int len的报错:Member reference base type 'double' is not a structure or union

main中coutAverage中对average()的报错:No matching function for call to 'average'

main是抄的视频里的,average是视频里抄完但没有average定义然后去百度抄的但不是数组输入而是输入*x和len的,然后自己改的输入vector数组的

但很显然没改对

我现在根本就不了解vector怎么用

下面这个是视频的代码

我再去看看vecotr的用法,以及average是要自己写的话怎么写,还是要导入什么库...

(1分钟后)

原来视频离我暂停的地方后面马上就讲average函数了...

average()函数这里确实只是接受了一个对象引用(arr),不知道这里面的元素个数

但是在函数内for循环需要时可以调用arr的函数" .size() "

这个" .size() "是vector对象的函数,返回函数个数来控制循环

正确的定义average()及完整代码如下

//计算数组arr中元素的平均值
double average(const vector<double> &arr)
    double sum = 0;
    for (unsigned i = 0; i < arr.size(); i++)
        sum += arr[i];
    return sum / arr.size();
int main() {
    unsigned n;
    cout<<"n = ";
    cin>>n;
    vector<double> arr(n);
    cout<<"Please input"<<n<<"real numbers:"<<endl;
    for ( unsigned i = 0; i < n; i++)
        cin>>arr[i];
    cout<<"Average = "<< average(arr)<<endl;
    return 0;

然后视频讲了个我没完全看懂的功能

//基于范围的for循环配合auto举例
#include <vector>
#include <iostream>
int main()
    std::vector<int> v = {1,2,3};
    for (auto i = v.begin();i != v.end(); ++i)
        std::cout<<*i<<std::endl;
    for (auto e : v)//每次循环e都会从v中取出一个数组元素来进行处理,
        std::cout<<e<<std::endl;

这个 " e : v " 的用法我是第一次见,说是可以每次循环时候,e 都会从 v 中取出一个数组元素来进行处理

所以第一个for里的*i的作用是什么呢?为什么指针感觉用的随随便便看不到用处?

i = v.begin();i != v.end() 这个我看懂了,挺巧妙的,这个.begin()和.end()也都是vector数组的功能

用auto确实很方便,因为不知道从vector数组中去取出来的可能是什么数

我想出来了为什么要用i的指针了

因为i是在for循环的第一个初始化中当场定义的

i = v.begin()按我的观察,这个v.begin()返回的是一个地址

是vector数组v第一个元素的地址

然后后面v.end()是vector数组v最后一个元素的地址

因为i都是vector数组v中元素的地址,故要输出数组元素的话,要用*i,取的是在i这个地址的元素的值

#include &lt;iostream&gt;#include&lt;vector&gt;#include&lt;stdio.h&gt;using namespace std;double average(double *arr){ int len = (*arr).size; int sum = 0; int i; for ( i = 0;i &lt; len; i++){ sum += i; } return su. double sum = std::accumulate(std::begin(resultSet), std::end(resultSet), 0.0);   double mean =  sum / resultSet.size(); //均值   double accum  = 0.0;   int sum = accumulate(vec.begin() , vec.end() , 42); accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。 accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型 用作求平均数的eg↓: int a[]={1,2,3,4,5,6};...
Program:Comparison of class averages this program is calculate two different group' averages data of the two groups are in two different files and the results input in a file. 从不同文件读取两个班级的同学分数,计算平均分,再以文件的形式输出平均分并比较大小
double average(vector<double> arr) { // 定义计算平均值的函数 double sum = 0; for (int i = 0; i < arr.size(); i++) { sum += arr[i]; return sum / arr.size(); int main() { vector<double> arr; // 声明一个 vector 动态数组 int n; cout << "请输入数组长度 n:"; cin >> n; for (int i = 0; i < n; i++) { double num; cout << "请输入第 " << i + 1 << " 个数:"; cin >> num; arr.push_back(num); // 将输入的数添加到 vector 数组 cout << "平均值为:" << average(arr) << endl; // 调用计算平均值的函数并输出结果 return 0; 首先,在程序开始处包含 `<vector>` 头文件,然后定义了一个名为 `average()` 的函数,该函数接受一个 vector 数组作为参数,并返回该数组的平均值。在主函数,首先声明了一个名为 `arr` 的 vector 数组,然后通过用户输入的方式向该数组添加元素。最后,调用 `average()` 函数计算平均值并将结果输出。