gpt4 book ai didi

c++ - 涉及 vector 的二进制搜索有问题 (C++)

转载 作者:行者123 更新时间:2023-11-30 04:18:11 27 4
gpt4 key购买 nike

我试图通过二进制搜索找到一个值,但我不断收到错误错误:'(& itemNumb)->std::vector<_Tp, _Alloc> 中的'operator=='不匹配::operator[], std::allocator >>(((std::vector >::size_type)middle)) == value'|我已经对 vector 进行了排序,但完全不确定是什么导致了错误。

    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>”。任何帮助都会很棒,我已经竭尽全力想解决这个问题,这对 C++ 来说还是个新手。

最佳答案

vector itemNumb 是一个字符串 vector ,而 value 是一个整数。您不能直接将字符串与整数进行比较。您首先必须将整数转换为 string

在 C++11 中,您可以使用 std::to_string()并做:

if (itemNumb[middle] == std::to_string(value))
// ^^^^^^^^^^^^^^^^^^^^^

一种可能的替代方法是使用 std::ostringstream,如图所示 in this answer .

关于c++ - 涉及 vector 的二进制搜索有问题 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16606314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com