Как указать диапазон на основе цикла for для конкретного контейнера базового класса
У меня есть класс который является производным от нескольких типов контейнеров STL и я хочу выполнить диапазон основанный на цикле for над конкретным из них например в приведенном ниже примере каков правильный синтаксис спасибо любезно
class cfoobar : public vector<int> , public map<int, int> { public: void foobar() { // how to perform a range based for loop over the contents of vector<int> for (auto x : ? ) { // ... } } };
Что я уже пробовал:
for(auto x : vector<int>::this> for(auto x : vector<int>::*this> for(auto x : *vector<int>::this>
Rick York
Я не могу придумать веской причины для вывода Как из карты, так и из вектора. Я могу придумать несколько веских причин, почему бы и нет.
PaltryProgrammer
Ваш комментарий заставил меня понять, что я должен использовать отношения "is a" и "has a" в моем дизайне, так как узел не является определенным видом вектора или карты, но вместо этого "имеет" детей вектор дочерних узлов должен быть классом-членом, а не базовым классом, так как для карты это просто инструмент для доступа к вектору и, конечно же, не является базовой формой узла, так что он также должен быть классом-членом спасибо любезно Cheerios
Rick York
Это звучит гораздо лучше для меня. Желаю удачи с этим.
PaltryProgrammer
У меня есть многоядерное дерево каждый узел является вектором потому что у него есть дочерние элементы однако при итеративном обходе дерева необходимо вести запись указателя на ранее посещенный узел когда этот узел является дочерним по отношению к текущему узлу затем необходимо эффективно найти следующий дочерний узел в векторе карта использует указатели дочерних узлов в качестве ключей для предоставления индексов в вектор так что следующий дочерний указатель может быть легко получен Спасибо за Ваш комментарий Cheerios