我正在尝试根据向量的输入计算平均值。如何向函数的调用者区分提供的是空向量还是仅包含 0 值的向量?我可以在一个函数中同时执行这两项操作还是需要 2 个函数?
您可以返回 astd::optional<T>来表示您的函数在空向量的情况下可能不会返回实际值。
std::optional<double> avg(const std::vector<int>& n) {
if(n.size() < 1)
return std::nullopt;
return std::accumulate(n.begin(), n.end(),0) / static_cast<float>(n.size());
}
int main() {
std::vector<int> numbers;
auto average = avg(numbers);
if(average) {
std::cout << "the average is" << average.value() << std::endl;
}else {
std::cout << "Could not compute average!" << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)