[英]Dereferencing Iterator to Custom Struct Field
我有一个要迭代的矢量播放器。 “玩家”结构如下所示:
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;
不幸的是,我一直遇到一个错误:“错误C2100:非法间接访问”(Visual C ++ 2008)。 我认为我错误地取消了迭代器的引用; 有更好的方法吗?
*itr->name
等效于(*itr)->name
。
在您的代码中, (*itr)
的类型是player
,而不是player*
,因此编译器基本上是在告诉您您要取消引用不是指针的内容。
正确的做法是(*itr).name
或itr->name
,都意味着“先引用itr然后访问名称”。
我认为我错误地取消了迭代器的引用;
查看更正的代码:
if (playerName.compare(itr->name) == 0)
要么
if (playerName.compare((*itr).name) == 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.