Мне нужно воссоздать карту каждый раз, а не просто ссылаться на уже созданную.Карты и указатели C++
Это работает:
void render(Scene *scene) {
map<std::string, Node*> _map = scene->getNodes(); // I don't want recreate the map every time. It is slowing down the render function :(
for(auto outer_iter = _map.begin(); outer_iter!= _map.end(); ++outer_iter) {
outer_iter->second->draw(*scene->getCamera());
}
}
Но это не ....
void render(Scene *scene) {
//map<std::string, Node*> _map = scene->getNodes();
for(auto outer_iter = scene->getNodes().begin(); outer_iter!= scene->getNodes().end(); ++outer_iter) {
outer_iter->second->draw(*scene->getCamera());
}
}
Я не понимаю, почему это происходит на самом деле.
Как я могу просто ссылаться на карту, которая находится в Сцене, не воссоздавая ее каждый раз?
Что ошибка является этим показателем? – Conduit
'map' такой дизайн вызывает больше для [управляемого указателя] (http://en.cppreference.com/w/cpp/memory) IMHO. –