C++ как читать map в map
В программе имеется map с записями(сделано), нужно его разделить пополам на блоки (сделано) и для каждого блока создать ещё статью map(не сделано). В этой статье поле ключа - значение ключа последней записи в блоке, информационное поле - адрес(индекс) первой записи в блоке. Как это можно реализовать?
#include <map>
#include <iostream>
#include <string>
#include <math.h>
#include <stdlib.h>
using namespace std::string_literals;
using namespace std;
int main()
{
struct info
{
int numbers[2]; //значение объёма массива должно быть const
char CHAR;
};
auto my_map = std::map <char, info>
{ {'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'}},
{'J', {7 , 0, 'j'}},
{'Q', {1 , 3, 'q'}},
{'B', {4 , 7, 'b'}} };
auto size = my_map.size(); //размерность map
auto size_of_blocks = size/2; //размер блоков
auto it = my_map.begin();
std::advance(it, size_of_blocks);
auto head_map = map{
std::make_move_iterator(my_map.begin()),
std::make_move_iterator(it)
};
auto tail_map = map{
std::make_move_iterator(it),
std::make_move_iterator(my_map.end())
};
std::cout << "Block 1\n";
for (auto [key, value] : head_map) {
std::cout << key << " => " << value.numbers[0] << " " << value.numbers[1] << " " << value.CHAR << "\n";
}
std::cout << "\n\nBlock 2\n";
for (auto [key, value] : tail_map) {
std::cout << key << " => " << value.numbers[0] << " " << value.numbers[1] << " " << value.CHAR << "\n";
}
map <char, int> article; //создание статьи
}