gpt4 book ai didi

c++ - 无法将 'notes' 从 'std::array' 转换为 'std::array

转载 作者:搜寻专家 更新时间:2023-10-31 01:44:37 26 4
gpt4 key购买 nike

我有一个与 push_back() 相同的函数,但它不起作用。

我该如何解决这个问题?

#include <iostream>
#include <array>
#include <string>
using namespace std;

double add(array<double, 6> const& tab);
void add_push_back(array<double, 6+1> tab);

int main()
{
const int tailleTab{6};
array<double, tailleTab> notes = { 11.0, 9.5, 8.4, 12.0, 14.01, 12.03 };
double myMoyenne{};
myMoyenne = add(notes);
cout << myMoyenne;

add_push_back(notes);

for (auto note: notes){
cout << note << endl;
}
return 0;
}

double add(array<double, 6> const& tab){
double result{};
for (double note: tab){
result += note;
}
result /= tab.size();
return result;
}

void add_push_back(array<double, 6+1> tab){
array<double, 6+1> push;
for (unsigned int i = 0; i < tab.size(); ++i){
push.at(i) += tab.at(i);
}
push.at(7) = {7};
for (unsigned int i = 0; i < push.size(); ++i){
tab.at(i) += push.at(i);
}
}

错误:

error: could not convert 'notes' from 'std::array<double, 6u>' to 'std::array<double, 7u>'|

最佳答案

你不能传递 std::array包含 6 个元素的函数期望 std::array有 7 个元素,因为 std::array<type, 6>是与 std::array<type, 7> 不同的类型 .具有不同模板参数的模板类被编译器认为是不同的类型。

要解决您眼前的问题,您需要更改 tab add_push_back 的参数来自 array<double, 6+1>array<double, 6> .

但是,我建议您使用 std::vectorstd::deque更适合调整大小。快速查看您的代码表明您甚至无法对数组执行您尝试执行的操作。您不能动态调整 std::array 的大小在运行时。

关于c++ - 无法将 'notes' 从 'std::array<double, 6u>' 转换为 'std::array<double, 7u>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23294159/

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