Здравствуйте у меня есть SceneGraph состоящий из Node:
class Node
{
public:
...
GLvoid addChild(Node* child) noexcept;
GLboolean isExistChildren() const noexcept;
GLvoid childrenForEach(std::function<GLvoid(Node* child)> callback) noexcept;
...
private:
Node* mChild = nullptr;
Node* mNextNode = nullptr;
}
GLvoid Node::addChild(Node* child) noexcept
{
child->mNextNode = mChild;
mChild = child;
}
GLboolean Node::isExistChildren() const noexcept
{
return mChild != nullptr;
}
GLvoid Node::childrenForEach(std::function<GLvoid(Node* child)> callback) noexcept
{
Node* iterator = mChild;
while (iterator)
{
callback(iterator);
iterator = iterator->mNextNode;
}
}
На данный момент обход делается следующим образом и только га один уровень графа от корня:
Node* mRootNode = ...;
if (mRootNode->isExistChildren())
{
mRootNode->childrenForEach([&shader](Node* child)
{
...
});
}
Хотелось бы написать свой кастомный итератор для этого, так не хочу использовать коллбеки, но не знаю как обойтись без ссылки на родительский узел(не хочу занимать лишнюю память под указатель для каждого узла)... Может кто-нибудь подскажет как лучше реализовать обход с минимальным использованием памяти и наибольшей производительностью в данном случае?
Нужно найти разницу между суммой всех цифр использованных для записи всех нечетных чисел от 1 до х и суммой всех цифр использованных для записи...
QT не может найти lineEditЯ пытаюсь забрать текст из lineEdit так: ui->lineEdit->text() Причём он не видит и не выводит lineEdit и даже когда я пытался вставить...
Есть проблемка: при возникновении исключения IOException нужно его обработать и в блоке Catch выбросить моё исключение ServerRunningException, которое будет...