2012-12-23 1 views
1

int v1, v2, v3, ... v10의 std :: vectors가 있습니다. 각 요소에는 약 100,000 개의 요소가 있습니다. 각 벡터는 다른 요소로 정렬됩니다 (그래서 10 개의 인자 함수 f1, f2, ... f10이 있습니다). 그래서 그들은 그들 자신에 의해 분류 되나, 서로에 비례하여 정렬되지 않습니다.다른 함수에 따라 정렬 된 std :: vectors의 교차점

나는이 10 개의 벡터의 교차점을 찾고 싶습니다. 그리고 나는 요인 중 하나에 따라 분류되도록 출력하고 싶습니다. 예 : 결과는 f1에 따라 정렬되어야합니다. 따라서이 10 개의 벡터를 factor 함수와 함께 intersect-sort 함수에 전달하면 f1에 따라 정렬 된 모든 벡터에있는 요소 만 포함하는 출력 벡터를 얻게됩니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+0

모든 벡터가 같은 순서로 정렬되어 있습니까? –

+0

번호 순서가 다릅니다. 각 벡터가 정렬되는 기능은 다릅니다. – Romonov

답변

0

그냥 std::set_intersection() 두어 시간을 사용하십시오. 결과를 저장하기 위해 두 개의 임시 벡터를 번갈아 사용해야한다고 생각합니다. 각 벡터를 한 번만 통과시키려는 경우 일반화 된 버전을 사용하여 현재 가장 작은 값의 우선 순위 대기열을 유지할 수 있습니다.