그래서 두 개의 벡터 vec1과 vec2가 있다고 가정합니다. 두 벡터에있는 요소에 대해서만 일부 연산을 수행하는 가장 빠른 방법은 무엇입니까? 여기까지, 나는 이것을 만들었습니다. 간단하게, 우리는 어떻게이 빨리 달성하거나 어떤 방법이 있습니다 : 그것은 vec1
의 각 요소에 대한 vec2
의 요소의 수 std::find
선형을 호출하기 때문에요소가 두 벡터에 모두 있는지 확인하는 가장 빠른 방법
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
}
}
입니까 VEC2의 요소 수는 벡터 정렬? 다른 데이터 구조를 사용할 수 있습니까? – Borgleader
@Borgleader 비록 그들이 아니더라도, 당신은 O (nlogn + mlogm) 시간에 그들을 안정적으로 정렬 할 수 있습니다. O (n * m)의 바지를 때려 눕 힙니다. – IdeaHat
이들이 정렬되면'std :: upper_bound'가됩니다 꽤 도움이. 그렇지 않다면,'std :: unordered_set '을 고려해 볼 가치가있는 여러 가지 방법이있다. –
WhozCraig