我收到编译器错误:
error: request for member 'first' in 'list.std::map::operator[], std::less, std::allocator > > >((* &0.0)).std::pair::second', which is of non-class type 'int' int closestX = list[0].second.first;
当尝试从一个名为列表定义的映射中读取数据并使用迭代器时:
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)));
我正在使用以下方法从 map 中读取值:
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;
关于c++ - 对值读取错误 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35330098/