Да и нет.Ошибка вызвана тем, что у вас есть «вектор векторов строк», то есть слишком много одного измерения.Определите data
, используя вместо этого std::vector<std::string>
, и он будет работать.
Но почему ошибка говорит об отсутствующих операторах?
Когда вы используете std::find()
, обычно это реализуется как макросили шаблонная функция, которая выполняет реальную работу, а не предварительно скомпилированная функция времени выполнения где-то в библиотеке.Это позволяет полной оптимизации компилятора на основе фактических типов ваших параметров.
Что он на самом деле делает - поскольку ваш контейнер является классом - пытается найти специальную функцию-член std::vector<std::vector<std::string>>::operator==(const char*)
.Это не реализовано напрямую, обычно это шаблон, но здесь это не важно.Важным фактом является то, что он не найдет ни одной версии operator==()
с аргументом, который каким-то образом может принять переданную строку, либо напрямую, либо посредством преобразования.Причина этого в том, что ваш вектор содержит векторы, поэтому единственным допустимым аргументом будет другой вектор строк.