Блочный поиск с map c++

Пытаюсь сравнить последнию запись ключей каждого блока с переменной char, вводимой пользователем. И там, и там тип char, при сравнении нужно узнать,больше ли вводимая пользоватем переменная, если да, то идти в следующий блок сравнивать, если нет, то сравнивать со всеми элементами из этого же блока, пока не найдётся тот, что нужен.

if (name_for_block > tail_map_end.first) ошибка в сравнении, пытался и .first, и .key ставить, ничего не получалось. В чём может быть проблема?

#include <iostream>
#include <locale.h>
#include <stdlib.h>
#include <map>
#include <string>
#include <math.h>
using namespace std;

int main()
{
    setlocale(LC_ALL, "RUS");
    struct info
    {
        int numbers[2]; //значение объёма массива должно быть const
        char CHAR;
    };
map <char, info> my_map = { {'H', {1 , 5, 'h'}},
                                {'K', {2 , 3, 'k'}},
                                {'A', {2 , 4, 'a'}},
                                {'D', {9 , 0, 'd'}},
                                {'C', {5 , 6, 'c'}},
                                {'S', {3 , 4, 's'}},
                                {'F', {7 , 2, 'f'}},
                                {'G', {2 , 7, 'g'}},
                                {'Z', {4 , 4, 'z'}},
                                {'Q', {1 , 3, 'z'}},
                                {'J', {7 , 0, 'z'}},
                                {'B', {4 , 7, 'b'}} };
// Блоки
    char name_for_block;
    cin >> name_for_block;
    auto size = my_map.size(); //размерность map
    auto N_blocks = size / 2; //число элементов в 1 блоке
    auto it1 = my_map.begin();
    
    advance(it1, N_blocks);

    auto head_map = map{
        make_move_iterator(my_map.begin()),
        make_move_iterator(it1)
    };
    auto it2 = head_map.rbegin();
    auto tail_map = map{
        make_move_iterator(it1),
        make_move_iterator(my_map.end())
    };
    auto it3 = tail_map.rbegin();
    auto head_map_end = map{
        make_move_iterator(it2),
        make_move_iterator(head_map.rbegin()) };
    auto tail_map_end = map{
        make_move_iterator(it3),
        make_move_iterator(tail_map.rbegin()) };

    cout << "Block 1\n";
    for (auto [key, value] : head_map_end) {
        if (name_for_block > head_map_end.first) //ошибка в сравнении
        cout << key << " => " << value.numbers[0] << " " << value.numbers[1] << " " << value.CHAR << "\n";
    }

    cout << "Block 2\n";
    for (auto [key, value] : tail_map) {
        if (name_for_block > tail_map_end.first) //ошибка в сравнении
        cout << key << " => " << value.numbers[0] << " " << value.numbers[1] << " " << value.CHAR << "\n";
    }
}

Проблема в самом низу


Ответы (0 шт):