繁体   English   中英

如何实现一个函数的头部,使得下面的代码可以工作?

[英]How to implement the header of a function such that the following code works?

vector<int> v1{4, 2, 1, 6, 3, -4};
assert(fct<int>(v1) == 6);
vector<int> v2;
try {
        fct<int>(v2);
        assert(false);
}
catch (exception& exc) {
assert(true);
}
vector<double> v3{2, 10.5, 6.33, -100, 9, 1.212};
assert(fct<double>(v3) == 10.5);

vector<string> v4{"y", "q", "a", "m"};
assert(fct<string>(v4) == "y");

我知道 fct 函数应该返回向量的最大值,但我无法理解函数的标题应该是什么样子。

我猜你的意思是函数声明(不是“标题”),所以它应该是这样的:

template<typename T>
T fct(const std::vector<T>& v);

PS:

  1. 您不应将该函数命名为“fct”,而应为其指定一个适当的名称,例如“max_element”或其他名称(或使用标准库提供的std::max_element函数)

  2. 不要使用using namespace std; 请参阅: 为什么是“使用命名空间 std;” 被认为是不好的做法

  3. 如果您没有绑定到某些较旧的 C++ 标准(或编译器),则 可以在调用函数时省略模板参数: assert(fct(v1) == 6);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM