В C++, что является самым быстрым способом (или достойным способом) для проверки каждого элемента в строковом векторе размером ок. 800 000, чтобы увидеть, находится ли он в другом строковом векторе ок. размер 200 000? Моя цель - нажать все строки первого, которые находятся во втором, на треть.Найти вектор большой строки в векторе большой строки
Мой новичок попытка никогда не будет останавливать работу:
vector<string> combosVsWords(vector<string> words, vector<string> lettercombos)
{
vector<string> firstwords;
for (int i = 0; i != lettercombos.size(); i++)
{
if (find(words.begin(), words.end(), lettercombos[i]) != words.end())
firstwords.push_back(lettercombos[i]);
}
}
могли бы вы поместить каждый вектор в свой собственный набор STL и создать третий набор с помощью функции STL пересечения? –
Честно говоря, я понятия не имею, что это значит, что я очень новичок в C++ и программировании вообще. edit: oh, стандартная библиотека, хм, позвольте мне немного изучить это. – Austin
Если у вашего вектора, в котором вы проходите, есть так много строк, вы должны передать их своей функции по ссылке const, а не по значению. Во-вторых, можно ли отсортировать ваши слова и букмекомы? Если это так, то первым вариантом использования 'std :: set_intersection' будет выбор. – PaulMcKenzie