C++地图和指针
C++ maps and pointers
我每次都必须重新创建地图,而不仅仅是引用已经创建的地图。
这有效:
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());
}
}
我不明白为什么会发生这种情况。
如何只引用 Scene 中的地图而不每次都重新创建它?
通过常量引用返回映射并更改为const map<std::string, Node*> &_map
:
class Scene{
map<std::string, Node*> map;
public:
const map<std::string, Node*>& getNodes() const{
return map;
}
}
void render(Scene *scene) {
const map<std::string, Node*> &_map = scene->getNodes();
for(auto outer_iter = _map.begin(); outer_iter!= _map.end(); ++outer_iter) {
outer_iter->second->draw(*scene->getCamera());
}
}
这将避免复制每个render
调用,而只是在地图上操作 n
相关文章:
- 从矢量或地图中删除共享指针
- 如何将元素插入到标准::地图的共享指针中?
- 无法将智能指针插入地图
- 从地图复制到指针列表
- EIGEN地图类:将C阵列映射到VectorXD指针以有效的方式
- 如何在地图中使用结构指针
- 为什么通用参考概念不适用于函数指针的地图插入
- C 通过指针的地图进行迭代
- 从地图擦除后访问指针
- C 如何在地图指针中的键增量值
- std ::地图没有父母指针
- 如何在两个包含指针的地图中创建列表
- 如何将模板函数指针作为值参数添加到地图中
- 使用地图模板函数指针
- 在Unorderd地图中删除指针
- 通过EMPLEPE()将对象指针插入地图中
- 如何在具有非常量指针键的地图中通过常量指针键查找
- 如何通过向量/地图对对象使用多个指针
- 分割故障,可能的原因:功能指针,多线程,STL地图等
- 如何从地图返回标准::p空气的指针并将其放入vector<*std::p air...>