c++ - 二维 vector 访问

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

我对这个错误很困惑

最佳答案

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

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

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

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

关于c++ - 二维 vector 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318525/

相关文章:

c++ - 构建我自己的 LPARAM 变量

c++ - 试图继承 STL 集时出现链接错误

c++ - 为什么 "using MyBase::myMethod"解决 "request for member myMethod is ambiguous"? (不是菱形图案!!!)

C++ 运算符重载

c++ - C++ 内联函数中的 return 语句实际上会返回并终止代码流吗?

c++ - 带有 boost::asio 的 TCP 服务器,线程池的可扩展性与无堆栈协程

python - map::lower_bound() 等同于 python 的 dict 类?

c++ - 为什么将不存在的键应用于 map::find 会在 C++ 中返回具有第一个值映射大小的迭代器?

c++ - 当一个元素从两者之间移除时,STL<vector> 中会发生什么?

c++ - C++11 标准容器是 "final"吗?