2013-09-26 3 views
2

Я пытаюсь понять эту строку кодаПонимания находки и векторы C++

vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5) 

где я vector<int> list_vector; объявлен заранее.

Что делают 5? Что он возвращает? Возвращает ли он 5, если он может найти его в начале и в конце? Если бы я хотел сделать оператор if, и я хотел найти, было ли число 10 в выражении (если оно было, вернет true), как бы я это сделал?

+8

http://en.cppreference.com/w/cpp/algorithm/find – us2012

+1

Я думаю, что «RTFM», суровы, как это может показаться, это единственный правильный ответ здесь ... –

+0

«найти если число 10 было в выражении [if] "? А? – aschepler

ответ

9
vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5) 

std::find поиск в диапазоне, определяемом его двумя двумя аргументами. Он возвращает итератор, указывающий на первый элемент, который соответствует. Если элемент не совпадает, он возвращает свой второй параметр.

list_vector.begin() возвращает итератор, который указывает на первый элемент list_vector.

list_vector.end() возвращает итератор, который указывает один элемент за конечный элемент list_vector.

5 является объектом поиска. find() будет искать элемент, который имеет значение 5.

Если вы хотите, чтобы определить, если 10 присутствует в любом месте в векторе, сделайте следующее:

if(std::find(list_vector.begin(), list_vector.end(), 10) == list_vector.end()) 
    std::cout << "No 10, bummer\n"; 
else 
    std::cout << "I found a 10!\n"; 

Или, если вы хотите, чтобы одновременно определить, присутствует 10 и определить его местонахождение :

std::vector<int>::iterator it = std::find(list_vector.begin(), list_vector.end(), 10); 
if(it == list_vector.end()) 
    std::cout << "No 10\n"; 
else 
    std::cout << "Look what I found: " << *it << "\n"; 
+0

Для первого один, он будет искать от начала до конца на 10, как это происходит, когда вы делаете ==, вы не можете сказать ему, 10, 5 или просто некоторую переменную int, которую я позволяю пользователю вводить? Это дает мне ошибки, когда я пытаюсь это сделать. например, find (list_vector.begin(), list_vector.end(), 10) == number) –

+0

@JakeSmith, 'std :: find' возвращает итератор, а не тип третьего аргумента. – chris

+0

как найти следующее вхождение, используя find –

Смежные вопросы