Как искать в заданном интервале векторного контейнера - PullRequest
0 голосов
/ 26 декабря 2011

Счастливого Рождества и Нового года!

Я хочу выполнить поиск в заданном интервале (а не в целом векторе) векторного контейнера, чтобы увидеть, присутствует ли указанное пользователем целое число или нет.Но я не мог заставить это работать.Не могли бы вы помочь мне?Большое спасибо.

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main () 
{
int myints[] = { 10, 20, 30 ,40 };
vector<int> myvector (myints,myints+4);
vector<int>::iterator it, itLower, itUpper;
itLower = myvector.begin();
itUpper = myvector.begin();
advance(itLower, 1);
advance(itUpper, 2);

// iterator to vector element:
it = find (itLower, itUpper, 50);

if (it != myvector.end())
{  
   // Found
   cout << "Found it";
}
else
{ 
   // Not fount
   cout << "Not found it";
}

return 0;
}

1 Ответ

0 голосов
/ 26 декабря 2011

Вы можете просто заменить строку

if (it != myvector.end()) ...

на

if (it != itUpper) ...

Если find не находит элемент, он возвращает последний элемент (который в вашем случае является концомвашего диапазона, а не полного вектора).Обратите внимание, что диапазон определяется с помощью itUpper exclusive.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...