1. ホーム
  2. c++

[解決済み】C++でオブジェクトのリストを反復処理する方法とは?

2022-02-08 22:16:02

質問

私はC++の初心者で、どのようにオブジェクトのリストを反復処理し、そのメンバーにアクセスすればよいのかわからず困っています。

私は、以下のように試しています。 datastd::listStudent というクラスがあります。

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’

解決方法は?

あと少しです。

std::list<Student>::iterator it;
for (it = data.begin(); it != data.end(); ++it){
    std::cout << it->name;
}

を定義することができることに注意してください。 it の内部で for のループになります。

for (std::list<Student>::iterator it = data.begin(); it != data.end(); ++it){
    std::cout << it->name;
}

また、C++11 を使用している場合は、範囲ベースの for ループの代わりに

for (auto const& i : data) {
    std::cout << i.name;
}

ここで auto は正しい型を自動的に推測します。次のように書くこともできます。 Student const& i の代わりに