我是c +的新手,并且正在努力弄清楚我应该如何迭代对象列表并访问那些成员.
我一直在尝试这里,'数据'是列表,'学生'是一个类.
std::list<Student>::iterator<Student> it;
for(it = data.begin(); it != data.end(); ++it){
std::cout<<(*it)->name;
}
Run Code Online (Sandbox Code Playgroud)
并得到以下错误
error: base operand of ‘->’ has non-pointer type ‘Student’
Run Code Online (Sandbox Code Playgroud)
Sim*_*ple 56
你很亲密
std::list<Student>::iterator it;
for (it = data.begin(); it != data.end(); ++it){
std::cout << it->name;
}
Run Code Online (Sandbox Code Playgroud)
请注意,您可以it
在for
循环内定义:
for (std::list<Student>::iterator it = data.begin(); it != data.end(); ++it){
std::cout << it->name;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是C++ 11,那么您可以使用基于范围的for
循环:
for (auto const& i : data) {
std::cout << i.name;
}
Run Code Online (Sandbox Code Playgroud)
这里auto
自动推断出正确的类型.你本来可以写的Student const& i
.
从 C++ 11 开始,您可以执行以下操作:
for(const auto& student : data)
{
std::cout << student.name << std::endl;
}
Run Code Online (Sandbox Code Playgroud)