3

We have a list

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();

How can I get the iterator std::list<int>::iterator iterTenBegin of the list where it starts with "10"?

4

3 回答 3

9

首先,不要使用变量名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实例命名为“列表”。

于 2013-06-13T15:58:50.463 回答
0

如果您的列表已排序,我想您可以使用 std::lower_bound 和 std::upper_bound

于 2013-06-13T16:00:52.150 回答