ordered_adaptor_iterator(void): container(NULL), current_index(std::numeric_limits<size_t>::max()), unvisited_nodes(compare_by_heap_value(NULL, ValueCompare())) {}
ordered_adaptor_iterator(const ContainerType * container, ValueCompare const & cmp): container(container), current_index(container->size()), unvisited_nodes(compare_by_heap_value(container, ValueCompare())) {}
ordered_adaptor_iterator(size_t initial_index, const ContainerType * container, ValueCompare const & cmp): container(container), current_index(initial_index), unvisited_nodes(compare_by_heap_value(container, cmp)) { discover_nodes(initial_index); }