二维矢量访问

时间:2011-11-29 22:16:38

标签: c++ stl

这两种访问方法之间的区别是什么?

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> &'

我对此错误非常困惑

1 个答案:

答案 0 :(得分:5)

取决于nodesvector还是vector *(或迭代器)。

如果第一个编译,则它必须是vector *(或迭代器)。在这种情况下,第二个需要成为:

(*nodes)[235].push_back(NavigationNode(NULL,0,0));

但请注意,通过operator[]at()访问具有不同的语义。后者将进行边界检查。