функция — Наличие проблемы с бинарным поиском с участием векторов (C ++)

Я пытаюсь найти значение с помощью бинарного поиска, но получаю сообщение об ошибке: нет совпадения с оператором == в (& itemNumb) -> станд :: вектор<_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 выдает одну и ту же ошибку, просто с оператором == или оператором> по порядку. Любая помощь вообще была бы замечательной, я нахожусь в конце своего ума, пытающегося понять это, довольно плохо знакомый с c ++.

1

Решение

Вектор itemNumb является вектором строк, в то время как value является целым числом Вы не можете напрямую сравнивать строку с целым числом. Сначала вы должны преобразовать целое число в string,

В C ++ 11 вы могли бы использовать std::to_string() и делать:

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

Возможной альтернативой является использование std::ostringstream, как показано в этом ответе.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector