2017-07-16 6 views
-1
class pair 
{ 
public: 
    int a, b; 
    pair(int tmp_a, int tmp_b) 
    { 
     a = tmp_a; 
     b = tmp_b; 
    } 
}; 

int main() 
{ 
    list<pair> l; 
    l.push_back(pair(1,6)); 
    l.push_back(pair(2,7)); 
    l.push_back(pair(3,8)); 
    l.push_back(pair(4,9)); 
    l.push_back(pair(5,10)); 

    for (auto& pair_item : l/*std::list<pair>::iterator i = l.begin(); i != l.end(); i++*/) //Edited 
    { 
     // print/modify the member variables in the object that iterator i points to 
    } 
    return 0; 
} 

含有する(参考文献を。コードに)リストは、タイプ対の要素を有します。たとえば、bからb + aに変更するなど、リスト内の要素(タイプペアのオブジェクト)を変更したいとします。どうすればこのような操作を行うことができますか?印刷/(STL)リストクラスの要素のタイプを定義するクラスオブジェクトの特定のメンバ変数を変更する

+0

あなたは(まだ正しいが、)を使用して任意の特定の理由古いスタイルのforループではなく、範囲の? – StoryTeller

+0

まだ慣れていません。私は前に多くの機会に範囲ベースのループを使用しましたが、この特定の機会、それはちょうど私を攻撃していない。私は私が持っていた問題にもっと夢中になったと思います。 –

+0

@ PuneetSinghコードに問題がある場合は、あなたの質問に明確に記載する必要があります(逐語エラーメッセージ)。 – user0042

答えて

3

...たとえばbからb + aに変更します。どうすればこのような操作を行うことができますか?

次の操作を行うことができます

あなたのコード例では、観察された問題については
for(auto& pair_item : l) { 
    pair_item.b += pair_item.a; 
} 

for (list<int>::iterator i = l.begin(); i != l.end(); i++) 
    // ^^^^^^^^^ Isn't matching `list<pair>` 
{ 
    (*i).b += (*i).a; // Should do the operation you want 
} 
+0

間違いを指摘していただきありがとうございます。私は 'list 'の代わりに 'list 'と書こうとしました。 –

関連する問題