我有我的調整二維向量的問題。二維矢量調整運行時錯誤
std::vector<std::vector<NavigationNode>> *nodes;
nodes->resize(sizex);
for(unsigned int i=0; i<sizex ;i++)
nodes[i].resize(sizey);
它按預期工作時i
爲0
,但崩潰時i
是1
。
你知道爲什麼嗎?
我有我的調整二維向量的問題。二維矢量調整運行時錯誤
std::vector<std::vector<NavigationNode>> *nodes;
nodes->resize(sizex);
for(unsigned int i=0; i<sizex ;i++)
nodes[i].resize(sizey);
它按預期工作時i
爲0
,但崩潰時i
是1
。
你知道爲什麼嗎?
您已將nodes
的類型定義爲指向矢量矢量的指針。假定,這個指針已被初始化爲正確分配存儲器,nodes[i]
不調用在外向量操作符[],它的訪問存儲器nodes
點,就好像它是一個連續陣列。它相當於*(nodes+i)
。
在這種情況下,更正確的語法爲(*nodes)[i]
。
std::vector<std::vector<NavigationNode>> *nodes;
nodes->resize(sizex);
for(unsigned int i=0; i<sizex ;i++)
(*nodes)[i].resize(sizey); //line changed
你似乎有一個指針向量。那麼,不要。
std::vector<std::vector<NavigationNode>> nodes(
sizex, std::vector<NavigationNode>(sizey)
);
更好的是,使用Boost.MultiArray。
boost::multi_array<NavigationNode, 2> nodes(boost::extents[sizex][sizey]);
護理添加語言標記? –
另外:關心顯示節點的定義?併發布錯誤消息? –
std :: vector> * nodes; –
mikbal