3

リストがあります

std::list<int> list;

// fill part of the list with 5
list.push_back(5);
list.push_back(5);
list.push_back(5);

// fill part of the list with 10
list.push_back(10);
list.push_back(10);
list.push_back(10);

// iterator that starts with 5
std::list<int>::iterator iterFiveBegin = list.begin();


//
std::list<int>::iterator iterEnd = list.end();

std::list<int>::iterator iterTenBegin「10」で始まるリストのイテレータを取得するにはどうすればよいですか?

4

3 に答える 3

9

まず、 variable name を使用しないでください。代わりlistに試してください。intList

あなたは使用することができますstd::find

std::list<int>::iterator it = std::find (intList.begin(), intList.end(), 10);

ドキュメントごと: std::find

std::find
戻り値
条件を満たす最初の要素への反復子、またはそのような要素が見つからない場合は最後の要素への反復子。

于 2013-06-13T15:58:12.577 に答える
4

ヘッダーからstd::findを使用するだけです。<algorithm>

std::list<int>::const_iterator ten = std::find(list.begin(), list.end(), 10);

有効であることを確認してください。

if (ten == list.end())
{
  // no 10 found in list
}

std::listまた、インスタンスに「list」という名前を付けないでください。

于 2013-06-13T15:58:50.463 に答える
0

リストがソートされている場合、 std::lower_bound と std::upper_bound を使用できると思います

于 2013-06-13T16:00:52.150 に答える