2

forループでリストをたどり、次のようなことをしたい:

list<my_object> my_list;

for(int x = 0; x < my_list.size(); x++){

   my_object tempObject = (my_list.back() - x);

   //more actions...

}

しかし、http://www.cplusplus.com/reference/stl/list/back/は、「-」演算子を「back()」関数と一緒に使用する例を示していますが、Visual C++ は「演算子なし」と表示します。 -" これらのオペランドに一致します"...

私は数日前に C++ を始めましたが、ここからどこへ行くべきかわかりません.. この方法でリストをたどることさえ可能ですか?

4

2 に答える 2

1

リストを反復処理する適切な方法は、反復子を使用することです。

list<my_object> my_list;

for (list<my_object>::iterator i(my_list.begin()), end(my_list.end()); i!=end; ++i) {
   my_object tempObject = *i;

   //more actions...

}

C++11 での反復子の使用:

for (auto i = begin(my_list), end = end(my_list); i!=end(); ++i) {
   my_object tempObject = *i;

   //more actions...

}

C++11 範囲ベースの for ループを使用できます。

for (my_object tempObject : my_list) {

   //more actions...

}

または、すでに「より多くのアクション」を実行する STL スタイルのアルゴリズム テンプレートがある場合:

more_actions(begin(my_list),end(my_list));
于 2012-06-23T23:08:11.610 に答える
1

この例では、リスト内の要素にリンクしているため、intそこで機能します。あなたがやろうとしているのは、のインスタンスから整数を減算することですmy_object。この操作を行う組み込み関数はありませんが、関数があればoperator-(my_object &lhs, int rhs)可能です。

于 2012-06-24T04:10:59.623 に答える