Итак, подумайте, что у нас есть два вектора vec1 и vec2. Каким будет самый быстрый способ только выполнить некоторую операцию с элементами, которые находятся в обоих векторах. До сих пор я это сделал. Просто, как мы можем достичь этого быстрее, и есть ли способ:Самый быстрый способ проверить, находится ли элемент в обоих векторах
vector<Test*> vec1;
vector<Test*> vec2;
//Fill both of the vectors, with vec1 containing all existing
//objects of Test, and vec2 containing some of them.
for (Test* test : vec1){
//Check if test is in vec2
if (std::find(vec2.begin(), vec2.end(), test) != vec2.end){
//Do some stuff
}
}
ли сортируются векторы? Можете ли вы использовать другую структуру данных? – Borgleader
@Bordleader, даже если это не так, вы можете стабильно сортировать их по времени O (nlogn + mlogm), что, несомненно, превосходит штаны O (n * m) – IdeaHat
Если они отсортированы, 'std :: upper_bound' будет Очень полезно. Если нет, существует несколько способов сделать это: 'std :: unordered_set' является одним из способов рассмотрения. –
WhozCraig