У меня есть карта, составленная из ключа (строка типа) и данных (тип кортеж). Я попытался отсортировать карту с помощью лямбды (см. Код ниже), но при компиляции я получил ошибку:
Код серьезности Описание Проект Состояние файла Подавление строки Ошибка C2676 бинарный '-': 'const std:: _Tree_unchecked_iterator >>> 'не определяет этот оператор или преобразование в тип, приемлемый для предопределенного оператора, с помощью [_Kty = std :: string, _Ty = std :: tuple] SandBox C: \ Program Files (x86) \ Microsoft VisualStudio \ 2019 \ Community \ VC \ Tools \ MSVC \ 14.23.28105 \ include \gorithm 3466
Код серьезности Описание Ошибка состояния подавления строки файла проекта C2672 '_Sort_unchecked': не найдена соответствующая перегруженная функция SandBox C: \ ProgramФайлы (x86) \ Microsoft Visual Studio \ 2019 \ Community \ VC \ Tools \ MSVC \ 14.23.28105 \ include \gorithm 3466
Мой код:
#include <iostream>
#include <string>
#include <tuple>
#include <map>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
int main() {
std::vector<std::string> strarr { "zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"};
int length = strarr.size();
std::string str = "";
map<string, tuple<int, int>> myMap;
for (int i = 0; i < length; i++)
myMap[strarr[i]] = make_tuple(strarr[i].length(), ++(get<1>(myMap[strarr[i]])));
typedef std::function<bool(std::pair<string, tuple< int, int >>, std::pair<string, tuple< int, int >>)> Comparator;
Comparator compFunctor =
[](std::pair<string,tuple< int, int>> el1, std::pair<string, tuple< int, int >> el2)
{
return (get<0>(el1.second) < get<0>(el2.second));
};
std::sort(myMap.begin(), myMap.end(), compFunctor);
}
Так чтоэто ошибка? Я уверен, что это что-то глупое, но не могу понять это самостоятельно.
Заранее спасибо.