c++ - 将迭代器取消引用到自定义结构字段

标签 c++ struct iterator dereference

我有一个 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 等同于(*i​​tr)->name

在你的代码中,(*i​​tr) 的类型是 player,而不是 player*,所以编译器基本上是在告诉你您正在尝试取消引用不是指针的内容。

正确的做法是 (*i​​tr).nameitr->name,两者的意思是“取消引用 itr 然后访问 name”。

关于c++ - 将迭代器取消引用到自定义结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466127/

相关文章:

c++ - 按索引和按名称检索的最佳数据结构

c++ - 为什么不能像这样复制 char 数组 charArray ="some string";

typedef 结构的 C 前向声明

java - 使用迭代器和 iterator.remove() 时出现 ConcurrentModificationException

python - 两个相反的迭代器,列表分配索引范围错误

C++:如何用两个迭代器构造对象?

c++ - VS 2015 c++ 编译问题

c++ - VS C++ ASM 到 GCC ASM

C - 跨多个文件的结构

python - struct.pack() 对网络数据包做了什么