У меня есть контейнерный класс, который по существу (показывает только соответствующие части)
class Foo {
typedef std::map<int, std::vector<int>> data_t;
data_t data;
struct iterator {
data_t::iterator major_it;
data_t::mapped_type::iterator minor_it;
// ...
};
iterator begin();
iterator end() {
return { data.end(), /* XXX */ };
}
};
Как видите, я хочу, чтобы итератор был реализован для этого контейнера.Итератор должен проходить через каждый узел в карте, а итератор - через каждый элемент в векторе, к которому относится этот узел.У меня нет проблем с реализацией итератора, но у меня возникли проблемы с реализацией end()
для контейнера.
Итератор состоит из двух уровней итераторов, а для итератора последнего конца major_it
придетсябыть data_t.end()
, но у меня не будет ничего для инициализации minor_it
.
В том же духе, begin()
также будет сломан, когда карта пуста.
Любая идея