ошибка преобразования - Каков тип возврата find ()? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь использовать find () для поиска вектора от начала до конца sh и возврата индекса 'storage';

    int num = stoi(cap.substr(0, cap.find(' ')));
    string storage = (cap.substr(cap.find(' ' + 1)));
    vector<string> storageArr = { "A", "B", "AB", "BA", "AA" };
    int element = find(storageArr.begin(), storageArr.end(), storage);

'cap' будет строкой, в формат числа, за которым следует пробел, за которым следует строка. (например: «128 B»). После того, как я разбил исходную строку, я хочу найти альфа-подстроку в векторе (или массиве) и инициализировать переменную «элемент» в ее месте.

Я был в предположении, что find () вернул бы неподписанное целое, но это, похоже, не так, поскольку я получаю «нет подходящей ошибки преобразования. Может кто-нибудь сказать мне, что я делаю неправильно?

1 Ответ

0 голосов
/ 26 февраля 2020

После небольшого поиска (методом проб и ошибок) я придумал следующее:

int index = find(storageArr.begin(), storageArr.end(), storage) - storageArr.begin();

Это похоже на преобразование возвращенного итератора в int (индекс, в котором storage был найден в storageArr).

Есть ли предопределенная функция, которая бы сделала это для меня?

...