繁体   English   中英

将迭代器解引用到自定义结构字段

[英]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).nameitr->name ,都意味着“先引用itr然后访问名称”。

我认为我错误地取消了迭代器的引用;

查看更正的代码:

if (playerName.compare(itr->name) == 0)

要么

if (playerName.compare((*itr).name) == 0)  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM