В С++, какой самый быстрый способ (или приличный способ) проверить каждый элемент в строковом векторе размером ок. 800 000, чтобы увидеть, находится ли он в другом строковом векторе размером ок. размер 200000? Моя цель — протолкнуть все струны первого, найденные во втором, в третий.
Моя попытка новичка никогда не прекратится:
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]);
}
}
std::set_intersection
будет вариантом. - person PaulMcKenzie   schedule 05.07.2015const
впереди? Надеюсь, это не указатели, потому что я еще не добрался до них. Да, с сортировкой все в порядке. Я проверю функцию пересечения. - person Austin   schedule 05.07.2015Hopefully that's not a pointer sort of thing
Вы спросили, как быстрее всего. Ничто другое не указывает, что вы можете или не можете использовать. В любом случае, я опубликовал ответ, что, если можно отсортировать векторы, есть способ получить пересечение двух векторов. - person PaulMcKenzie   schedule 05.07.2015