3

次のチェックが必要かどうか知りたいです。

std::list<int> myList;
.....
for (std::list<int>::iterator itr = myList.begin(); itr != myList.end(); ++itr)
{
   if (itr != NULL) // Is This Check Necessary?
   {
      // DO SOMTHING.
   }    
}

私はいくつかの場所でこのチェックを見ました、そしてそれが必要なチェックであるかどうか疑問に思います。リストが関数への入力である場合、おそらくこのチェックが必要ですか?

ありがとう、オファー。

4

5 に答える 5

4

いいえ、不要なチェックです。*itr != nullptrリストに何らかのポインタが含まれているかどうかを確認することをお勧めします。

于 2013-03-27T09:02:54.387 に答える
2

いいえ、必要ありません。それが有効かどうかさえわかりません。

于 2013-03-27T09:03:04.530 に答える
1

代わりに、forループに基づく新しい範囲(C ++ 11)を使用できるため、イテレーターチェックを処理する必要はありません。

std::list<int> YourList;
for( auto z : YourList ) {
//
std::cout << z;        // z is int
// amazing codes and fun :)
//
}
于 2013-03-27T09:05:28.507 に答える
1

チェックする必要はありません。myListが空の場合、myList.begin()はmyList.end()と等しくなります。

于 2013-03-27T09:19:25.923 に答える
1

イテレータが初期化されていないかどうかをテストする方法はないと思いますが、デフォルト値としてコンテナのend()にイテレータを初期化できます。

std::list<int>::iterator itr = yourlist.end();
//
if (itr != yourlist.end())
{
    //doSomething
}
于 2013-03-27T09:33:13.907 に答える