0
点赞
收藏
分享

微信扫一扫

c++迭代器访问二维数组遇到的问题

覃榜言 2022-03-19 阅读 46
c++

前言

在用如下代码使用迭代器访问二维数组时,编译器报错,十分疑惑,遂查找相关内容

vector<vector<int>> a = {{2, 1}, {1, 2}};
cout << *(a.begin() + 1)[0];

尝试

这里就更疑惑了,就算解引用不成功,->begin()也应该是个指针啊,怎么可以输出1呢?

vector<vector<int>> a = {{2, 1}, {1, 2}};
cout << *(a.begin() + 1)->begin();
>> 1

询问

询问了ACMer hyc带佬,他猜测是优先级问题,*的优先级比较低,尝试将代码改成如下形式,成功输出,确认是优先级问题

vector<vector<int>> a = {{2, 1}, {1, 2}};
cout << (*(a.begin() + 1))[0];
>> 1

下表中说明 ->优先级大于 *

在这里插入图片描述

c++运算符优先级详情可见C++ 符号优先级_Stephen. K的博客-CSDN博客_c++符号优先级

举报

相关推荐

0 条评论