C++ 函数专门化的问题
我必须对函数进行专门化,但参数较少 这是原始功能:C++ 函数专门化的问题,c++,templates,C++,Templates,我必须对函数进行专门化,但参数较少 这是原始功能: template<typename T> bool isAfter(const T &x, const T &y) { if (x < y) { return true; } return false; } 模板 布尔·伊萨弗特(康斯特T&x、康斯特T&y){ if(x
template<typename T>
bool isAfter(const T &x, const T &y) {
if (x < y) {
return true;
}
return false;
}
模板
布尔·伊萨弗特(康斯特T&x、康斯特T&y){
if(x
这是我的尝试,但我会出错
template<> inline bool Templates::isAfter(std::vector<string> &vec) {
for(int i=0; i<vec.size()-1; i++) {
if(vec[i+1].size() < vec[i].size()) {
return false;
}
return true;
}
}
模板内联bool模板::isAfter(std::vector和vec){
对于(int i=0;i
模板
布尔·伊萨弗特(康斯特T&x、康斯特T&y){
if(x
专业化可以是
template<>
bool isAfter(const std::vector<std::string> &vec1, const std::vector<std::string> &vec2) {
return vec1.size() < vec2.size();
}
模板
bool isAfter(const std::vector&vec1,const std::vector&vec2){
返回vec1.size()
因为它跟在签名后面,T是std::vector
但是在您的例子中只有一个参数,所以您不需要专门化,您可以定义一个具有相同名称的函数(重载),删除template
附言
bool-isAfter(标准::向量和向量){
对于(int i=0;i 1)
返回(vec[1].size()>=vec[0].size());
/*缺少返回值*/
}
也许你想要
bool isAfter(std::vector<string> &vec) {
for(int i=0; i<vec.size()-1; i++) {
if(vec[i+1].size() < vec[i].size()) {
return false;
}
}
return true;
}
bool-isAfter(标准::向量和向量){
对于(inti=0;这不是专门化,只是重载而已。哦,谢谢。我还认为这一定是重载,而不是专门化。但在任务说明中,原始函数有两个参数,专门化函数必须只有向量,没有第二个参数,所以我们的教授写ins肯定犯了错误说明。无论如何,谢谢你,分享你的观点。
bool isAfter(std::vector<string> &vec) {
for(int i=0; i<vec.size()-1; i++) {
if(vec[i+1].size() < vec[i].size()) {
return false;
}
return true;
}
}
bool isAfter(std::vector<string> &vec) {
if (vec.size() > 1)
return (vec[1].size() >= vec[0].size());
/* missing return value */
}
bool isAfter(std::vector<string> &vec) {
for(int i=0; i<vec.size()-1; i++) {
if(vec[i+1].size() < vec[i].size()) {
return false;
}
}
return true;
}