gpt4 book ai didi

c++ - 初始化 vector (C++)

转载 作者:太空宇宙 更新时间:2023-11-04 16:09:11 30 4
gpt4 key购买 nike

我一直在尝试创建一个将数字输入 vector (准确地说是 7)并计算平均值的函数。但是,我尝试将每个 vector 元素初始化为用户输入的数字。示例:

double average(int a, int b, int c, int d, int e, int f, int g)
vector<double>aa;
aa[0]=int a;
aa[1]=int b;
aa[2]=int c; etc.

但是当我这样做的时候,我得到了

error: expected primary-expression before ‘int’

当我把它改成

for(size_t j=0; j<=7; j++)
{
cout<<"Enter item # " <<(j+1);
cin>>a[j];
}

我明白了

invalid types ‘int[size_t {aka unsigned int}]’ for array subscript cin>>a[j];

我是编程新手,可能无法理解复杂的答案。如果之前有人问过这个问题,我深表歉意。我使用 Linux Ubuntu 编译我的代码(终端,g++)。

注意我们的讲师对此的回答是:

double average (const vector<int>& v)
{
int N = v.size();
int sum = 0;
for (int i = 0; i < N; i = i + 1)
{
sum = sum + v[i];
}
return static_cast<double>(sum)/(N);
}

(我认为我的错误是因为他要求“按引用函数调用”,我想我创建了一个“按值调用”。我不知道他写了什么(尤其是 return static_cast<double>(sum)/(N);

最佳答案

你真的应该拿起你的教科书,开始阅读,最好是昨天。不过,我将分别介绍每个部分。

您的代码(略有更改)

double average(int a, int b, int c, int d, int e, int f, int g)
{
vector<double>aa;
aa[0]=int a;
aa[1]=int b;
aa[2]=int c;
// etc.
}

有一些问题。您收到的错误是由于所有看起来像 aa[0]=int a; 的行造成的字int不应该在那里。如果删除它们,它应该会编译,并在运行时崩溃,如 aa大小仍然为 0。您可以预分配 vector ( vector<double> aa(7); ) 或使用 aa.push_back(aa); .

第二次尝试

for(size_t j=0; j<=7; j++)
{
cout<<"Enter item # " <<(j+1);
cin>>a[j];
}

对于初学者来说,第一行应该是for(size_t j=0; j<7; j++) (缺少 = )。 a应该是 vector<double>从第一次尝试开始,而不是函数参数。

你的讲师代码有一行

double average (const vector<int>& v)

&v 之前告诉函数它没有收到变量 v 的拷贝(按值) ,而是原始拷贝(通过引用)。通常,这意味着如果函数改变了它的值,那么调用函数的拷贝也会改变。然而,这里有一个神奇的词 const不允许函数更改值。

最后,static_cast<double>是从 int 转换(更改)变量类型的一种形式到 double .原因是3/2 == 13.0/2 == 1.5 .

关于c++ - 初始化 vector (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556689/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com