【发布时间】:2021-01-12 11:26:19
【问题描述】:
int var = 20;
vector<string> A{"anything here", "random words"};
for(int i = 0;i<A.size();i++)
m=min(var,A[i].size());
// rest of the code here
//assume proper headers were included
第 4 行给出错误:没有匹配函数调用 'min(int&,std::__cxx11::basic_string::size_type)'
【问题讨论】:
-
关于你的标题:实际上,导致问题的不是
size(),而是你将两种不同类型的参数传递给std::min()这一事实。根据其definition,只能对两个相等的参数类型正确推断。另一种选择是使min的类型显式,例如min<size_t>(var, A[i].size())或min<int>(var, A[i].size())。不过,请记住关于size_t与int的内容... -
考虑为这样的代码使用迭代器 for 循环。所以
for (const auto& s : A) m = min(var, s.size());。并且还可以考虑在代码中保留更多的空白,以使其更易于阅读。