这两种访问方法之间的区别是什么?
nodes->at(235).push_back(NavigationNode(NULL,0,0));
nodes[235].push_back(NavigationNode(NULL,0,0));
第二个给出了这个编译错误
cannot convert parameter 1 from 'PathFinder::NavigationNode' to 'const std::vector<_Ty> &'
我对此错误非常困惑
答案 0 :(得分:5)
取决于nodes
是vector
还是vector *
(或迭代器)。
如果第一个编译,则它必须是vector *
(或迭代器)。在这种情况下,第二个需要成为:
(*nodes)[235].push_back(NavigationNode(NULL,0,0));
但请注意,通过operator[]
和at()
访问具有不同的语义。后者将进行边界检查。