Мой вопрос - небольшое обобщение этого . Для обсуждения я сосредоточусь на повторении ключей карты. Я хотел бы иметь общую вспомогательную функцию key_iterator
, которая принимает итератор карты и возвращает итератор ключа карты. Например, следующий код:
#include "key_iterator.hpp"
#include
#include
#include
#include
должен выдать следующий результат:
One Two
Как предлагается в решении вопроса, упомянутого выше, boost :: transform_iterator кажется подходящей отправной точкой для реализации key_iterator
. У меня есть промежуточное решение, которое выглядит так для key_iterator.hpp:
#pragma once
#include
#include
, но с этой реализацией типы Key и Value не выводятся автоматически, и мне нужно указать их вручную, чтобы заставить его скомпилировать:
std::copy(key_iterator(m.begin()), key_iterator(m.end()), std::ostream_iterator(std::cout, " "));
Any мысли о том, как заставить это работать так, как я хочу?