为什么在C ++中的min函数中使用size会产生错误?

问题描述

    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());

vari的类型应为size_t,因为它们正在与类型为A.size()的{​​{1}}进行比较。大概size_t也应该如此。

要回答这个问题,m(和std::min)两个参数都需要相同的类型。