Ошибка при поиске в векторе
Есть вектор структур
vector keywordVec;
keywordVec.push_back({ "PROCEDURE", 401 });
keywordVec.push_back({ "BEGIN", 402 });
keywordVec.push_back({ "END", 403 });
Нужно осуществить поиск по полю структуры
string currentTokenName = "END";
Делаю вот так:
vector<keywordStruct>::iterator it = find(keywordVec.begin(), keywordVec.end(), currentTokenName);
Выбивает такую ошибку:
binaary '==': 'main::keywordStruct' does not define this operator or a conversion to a type acceptable to the predifined operator
Библиотеки, которые подключила
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
Как устранить эту ошибку или может есть альтернативные реализации?
Ответы (2 шт):
Автор решения: pagislav
→ Ссылка
struct keywordStruct
{
string s;
int i;
bool operator==(const string& str) const
{
return this->s == str;
}
};
Просто пропишите в вашей структуре оператор сравнения со строкой
Автор решения: Harry
→ Ссылка
Пусть строковое поле структуры называется str. Тогда примерно так:
auto it = find(keywordVec.begin(), keywordVec.end(),
[currentTokenName](auto v){ return v==currentTokenName; });