我有一个 vector 播放器,我想对其进行迭代。 “玩家”结构如下所示:
struct player {
string name;
int rating;
};
我在 for 循环中使用迭代器来查看是否有任何“玩家”具有名称“playerName”(字符串)。
for (vector<player>::iterator itr = players.begin(); itr != players.end(); ++itr) {
if (playerName.compare(*itr->name) == 0) return true;
}
return false;
不幸的是,我一直遇到错误:“error C2100: illegal indirection” (visual C++ 2008)。我相信我错误地取消了对迭代器的引用;有更好的方法吗?
最佳答案
*itr->name
等同于(*itr)->name
。
在你的代码中,(*itr)
的类型是 player
,而不是 player*
,所以编译器基本上是在告诉你您正在尝试取消引用不是指针的内容。
正确的做法是 (*itr).name
或 itr->name
,两者的意思是“取消引用 itr 然后访问 name”。
关于c++ - 将迭代器取消引用到自定义结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466127/