我试图在 C++ 中访问迭代器中的结构元素,但编译器只给我一个错误,指出该结构不包含该元素。我正在尝试执行以下操作:
typedef struct
{
string str;
int frequenzy;
} word;
bool isPresent = false;
for(std::vector<word>::iterator itr=words.begin(); itr!=words.end(); ++itr)
{
if(*itr.str.compare(currentWord)==0){
isPresent = true;
*itr.frequenzy++;
}
}
我收到以下消息:
lab7.cc: In function 'int main()':
lab7.cc:27:13: error: 'std::vector<word>::iterator' has no member named 'str'
lab7.cc:29:11: error: 'std::vector<word>::iterator' has no member named 'frequen
zy'
为什么这不可能?
最佳答案
您可能应该这样重写 for
循环的主体:
if (itr->str.compare(currentWord)==0)
// ^^
{
isPresent = true;
itr->frequenzy++;
// ^^
}
.
运算符的优先级高于 *
运算符。因此,如果你真的想使用这两个运算符,你应该这样重写上面的内容:
if ((*itr).str.compare(currentWord)==0)
// ^^^^^^^
{
isPresent = true;
(*itr).frequenzy++;
// ^^^^^^^
}
关于c++ - 在迭代器问题 C++ 中访问结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15464190/