我是C++的新手,正在努力弄清楚我应该如何遍历对象列表并访问它们的成员。
我一直在尝试这样做,其中data
是一个std::list
,而Student
是一个类。
std::list<Student>::iterator<Student> it;
for (it = data.begin(); it != data.end(); ++it) {
std::cout<<(*it)->name;
}
并得到以下错误:
error: base operand of ‘->’ has non-pointer type ‘Student’
5条答案
按热度按时间avwztpqn1#
你很接近了。
注意,您可以在
for
循环中定义it
:如果你使用的是C++11,那么你可以使用一个基于范围的
for
循环:这里
auto
自动推导出正确的类型,你可以写Student const& i
来代替。ruarlubt2#
从C++ 11开始,您可以执行以下操作:
wz1wpwve3#
还值得一提的是,如果您不打算修改列表的值,可以(并且更好)使用
const_iterator
,如下所示:pwuypxnk4#
如果你添加了一个
#include <algorithm>
,那么你可以使用for_each
函数和一个lambda函数,如下所示:您可以在https://en.cppreference.com/w/cpp/algorithm阅读有关算法库的更多信息
以及关于cpp中λ函数在https://learn.microsoft.com/en-us/cpp/cpp/lambda-expressions-in-cpp?view=vs-2019上的应用
bbuxkriu5#