Есть такой код, описывающий вложенные списки:
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;
}
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости