Ошибка при поиске в векторе

Есть вектор структур

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; });
→ Ссылка