第一個迭代通過C++映射的差異
我有一個包含繪圖函數的類節點。節點包含在地圖中,例如:
map<std::string, Node*>
當我使用迭代器繪製地圖中的所有節點時,什麼都不會發生。 (gc是我傳遞給繪圖函數的圖形上下文)
std::map<std::string, Node*>::const_iterator itr = _Nodes.begin();
while(itr != _Nodes.end())
{
itr->second->setX(100);
}
但是這不起作用。但是,如果我構建我的迭代器不同,它的作品。
std::map<std::string, Node*>::const_iterator end = _Nodes.end();
for(std::map<std::string, Node*>::const_iterator it = _Nodes.begin(); it != end; ++it){
it->second->draw(gc);
it->second->setSize(100);
}
我的問題是爲什麼一個人工作,而不是其他人?
第二個問題是,如何在NodeManager類中存儲所有節點而不必命名它們的替代方法是什麼?只是一個簡單的列表?
在第一個'while'循環中,您不會調用'draw'。這是一個錯字還是一個真正的錯誤? – Naveen 2012-03-05 04:59:32
請勿使用下劃線 - 大寫名稱,因爲它們是保留的,並且使用它們是未定義的行爲。 – 2012-03-05 05:48:16