问题描述
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_t
类型(通常为unsigned long long
)。您可以简单地更改var
的类型:
string::size_type var = 20;
应该可以解决问题。
与for循环中的i
相同:
for (string::size_type i = 0; i < A.size(); i++)
,
更好的代码
size_t var = 20;
vector<string> A{"anything here","random words"};
for (size_t i = 0; i < A.size(); i++)
m = min(var,A[i].size());
var
和i
的类型应为size_t
,因为它们正在与类型为A.size()
的{{1}}进行比较。大概size_t
也应该如此。
要回答这个问题,m
(和std::min
)两个参数都需要相同的类型。