对值读取错误C++

Pair Value Reading Errors C++

本文关键字:C++ 取错误 读取      更新时间:2023-10-16

我收到编译器错误:

错误:在"list.std::map::operator[]"中请求成员"first", std::less, std::分配器>>>(* &0.0)).std::p air::second',即 非类类型 'int' int closestX = list[0].second.first;

尝试从名为 list defined 并使用迭代器的映射读取数据时:

map<double, pair<int, int>> list;
map<double, pair<int, int>>::iterator it = list.begin();

列表中的成员插入:

list.insert(it, pair<double, pair<int, int>>(findDistance(posr,posc,j, i), pair<int, int>(j, i)));

我正在使用以下命令从地图中读取值:

int closestX = list[0].second.first;
int closestY = list[0].second.second;

该错误似乎表明list[0].second.first的返回类型是非类类型 int,但该返回类型与 closestX 的值类型完全匹配,我现在碰壁了。假设 list[0] 已初始化并保存有效值。

list[0]已经是值类型pair<int, int>,而不是迭代器类型。所以你可以写

int closestX = list[0].first;
int closestY = list[0].second;

该错误似乎表明 list[0].second.first 的返回类型是非类类型 int

不,错误消息告诉list[0].second不是类类型,因此您无法对其执行.first

请注意,std::map::operator[]将返回mapped_type

返回对映射到等效键的值的引用。

list                 => map<double, pair<int, int>>
list[0]              => pair<int, int>
list[0].second       => int
list[0].second.first => failed