这两种访问方式有什么区别?
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> &'
我对这个错误很困惑
最佳答案
这取决于 nodes
是 vector
还是 vector *
(或迭代器)。
如果第一个编译通过,那么它必须是一个vector *
(或迭代器)。在这种情况下,第二个需要变成:
(*nodes)[235].push_back(NavigationNode(NULL,0,0));
但是请注意,通过 operator[]
访问和通过 at()
访问具有不同的语义。后者将进行边界检查。
关于c++ - 二维 vector 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318525/