다른 벡터의 값을 기준으로 벡터 정렬
동일한 길이의 벡터가 여러 개 있고 다음을 수행하려는 시나리오를 생각해 보세요. 다른 벡터에 동일한 순열을 적용하면서 지정된 순서로 하나의 벡터를 정렬합니다. 이는 여러 벡터에 걸쳐 이 정렬 패턴을 활용하는 방법에 대한 과제를 제기합니다.
해결책
다른 벡터의 값을 기준으로 벡터를 정렬하려면 사용자 정의를 사용할 수 있습니다. 정렬하고 각 요소의 인덱스를 정렬 벡터의 해당 값과 쌍을 이루는 벡터를 사용합니다.
typedef vector<int>::const_iterator myiter; vector<pair<size_t, myiter>> order(Index.size()); size_t n = 0; for (myiter it = Index.begin(); it != Index.end(); ++it, ++n) order[n] = make_pair(n, it); struct ordering { bool operator ()(pair<size_t, myiter> const& a, pair<size_t, myiter> const& b) { return *(a.second) < *(b.second); } }; sort(order.begin(), order.end(), ordering());
일단 정렬된 순서를 사용하면 이를 다른 벡터의 각 요소에 대한 새 인덱스에 대한 조회 테이블로 활용할 수 있습니다.
template <typename T> vector<T> sort_from_ref( vector<T> const& in, vector<pair<size_t, myiter>> const& reference ) { vector<T> ret(in.size()); size_t const size = in.size(); for (size_t i = 0; i < size; ++i) ret[i] = in[reference[i].first]; return ret; }
이 프로세스를 적용하면 대상 벡터를 효과적으로 정렬하고 동일한 변환을 적용할 수 있습니다. 다른 벡터의 해당 요소에 연결합니다.
위 내용은 단일 벡터의 값을 기준으로 여러 벡터를 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!