Есть такой код, описывающий вложенные списки:
class Item
{
public:
Item();
private:
int m_data1;
int m_data2;
};
class SubGroup
{
public:
SubGroup();
private:
std::vector<Item> m_cont;
};
class Group
{
public:
Group();
private:
std::vector<SubGroup> m_cont;
};
Вопрос: как лучше получить доступ элементам Item
(перебрать все) из управляющего класса Manager
?
class Manager
{
public:
Manager(Group &group);
};
Может быть есть какой то паттерн? Модификация классов списка допустима.
Как лучше?.. Решать вам, исходя из вашей задачи и намерений, но в любом случаи нужно обеспечить доступ к элементам закрытых членов. Простой пример:
class Item
{
int m_data1;
int m_data2;
public:
int& first = m_data1,
second = m_data2;
};
class SubGroup
{
private:
std::vector<Item> m_cont;
public:
using Iter = std::vector<Item>::iterator;
std::pair<Iter, Iter> range()
{ return { m_cont.begin(), m_cont.end() }; }
};
class Group
{
std::vector<SubGroup> m_cont;
public:
using Iter = std::vector<SubGroup>::iterator;
std::pair<Iter, Iter> range()
{ return { m_cont.begin(), m_cont.end() }; }
};
class Manager
{
public:
Manager(Group&);
};
Manager::Manager(Group& g)
{
auto pG = g.range();
auto pS = pG.first;
while (pS != pG.second) {
auto p = pS->range();
auto p1 = p.first;
while (p1 != p.second) {
p1->first = rand() % 100;
p1->second = rand() % 50;
++p1;
}
++pS;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу разобраться почему не считает, вроде отладчиком прошелся посмотреть чему равен lidataset
Всем добрый день! При разработке проекта на Django не удается подключить стили CSSСоздана директория static, где лежат как стили, так и картинки
Как сделать чтобы функция выполнялась только тогда, когда выполнились оба условия? Необходимо, чтобы блок становился серым только при условии,...
Есть 3 класса и под каждый из классов сделана привязка через DataBinding для передачи данных на форму, и 4й главный обобщающий куда занесены данные...