Блочный поиск с 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";
}
}
Проблема в самом низу