我试图通过二分搜索找到一个值,但我一直收到错误错误:'(& itemNumb)中的'operator =='不匹配 - > std :: vector< _Tp, _Alloc> :: operator [],std :: allocator> >(((std :: vector> :: size_type)middle))== value'|我已经对矢量进行了排序,完全不确定导致错误的原因。
void Search(vector<string>& itemNumb, vector<string>& itemName, vector<double>& itemCost, vector<int>& itemQuant)
{
int left, right, value, middle;
left = 0;
right = itemNumb.size();
cout << "Please enter desired item number." << endl;
cin >> value;
while (left <= right)
{
middle = ((left + right) / 2);
if (itemNumb[middle] == value)
{
cout << "Item is " << itemName[middle] << endl;
cout << "Price is " << itemCost[middle] << endl;
cout << "Amount in stock is " << itemQuant[middle] << endl;
}
else if (itemNumb[middle] > value)
{
right = (middle - 1);
}
else
{
left = (middle + 1);
}
}
if (intNumb[middle] != value)
{
cout << "Item number not found." << endl;
}
}
每个if语句都给出了相同的错误,只需使用“operator ==”或“operator&gt;”为了。任何帮助都会很精彩,我正在努力解决这个问题,这对c ++来说很新鲜。
答案 0 :(得分:2)
向量itemNumb
是字符串向量,而value
是整数。您无法直接将字符串与整数进行比较。首先必须将整数转换为string
。
在C ++ 11中,您可以使用std::to_string()
并执行:
if (itemNumb[middle] == std::to_string(value))
// ^^^^^^^^^^^^^^^^^^^^^
可能的替代方法是使用std::ostringstream
,如图in this answer所示。