2014-05-16 2 views
0

У меня есть вектор ключевых слов, и мне нужно перебирать его.Итерация через вектор без начала и конца

Моя попытка:

bool isKeyword(string s) 
{ 
    return find(keywords, keywords + 10, s) != keywords + 10; 
} 

однако это работает для массива, но не для вектора. Как я могу изменить + 10 для итерации по вектору? Мне нужно это, так как я не могу использовать end и начинать, потому что у меня нет поддержки C++ 11.

ошибки приведены для приведенного выше кода:

error: no matching function for call to 'find(std::vector<std::basic_string<char> >&, std::vector<std::basic_string<char> >::size_type, std::string&)'| 
+5

'keywords.begin()'. Для этого вам не нужен C++ 11. Почему +10, правда? – dlf

+0

@dlf, предположительно текущий массив имеет 10 элементов. Во всяком случае, легко создать свои собственные бесплатные версии 'begin' и' end', если у вас нет C++ 11. – chris

+0

Посмотрите на эту замечательную ссылку относительно вектора: [std :: vector] (http://en.cppreference.com/w/cpp/container/vector). Вы найдете, что 'begin()' и 'end()' и соответствующие итераторы были поддерживаются задолго до выпуска C++ 11. –

ответ

2

Использование begin() и end() так:

find(keywords.begin(), keywords.end(), s) 

Вот пример:

#include <iostream> 
#include <vector> 
#include <string> 
#include <algorithm> // std::find 

using namespace std; 

bool isKeyword(string& s, std::vector<string>& keywords) 
{ 
    return (find(keywords.begin(), keywords.end(), s) != keywords.end()); 
} 

int main() 
{ 
    vector<string> v; 
    string s = "Stackoverflow"; 
    v.push_back(s); 
    if(isKeyword(s, v)) 
     cout << "found\n"; 
    else 
     cout << "not found\n"; 
    return 0; 
} 

Как и другие государства, вы делаете не требуется C++11 для этого приложения.

Ref, of std::find.

+0

Зачем передавать 'string s' по значению, когда копия не нужна? –

+0

Я только что скопировал прототип OP. Хороший момент, я отредактирую @ C.R. – gsamaras

+1

Дальше nitpicking, ссылка должна быть 'const', или вы не сможете передавать ей временные данные. –

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