다른 벡터의 값을 기준으로 벡터 정렬
길이가 같은 여러 벡터가 있고 하나의 벡터를 정렬하려는 시나리오를 생각해 보세요. 다른 벡터의 값을 기반으로 합니다. 예를 들어, 정수의 벡터 인덱스와 문자열의 벡터 값이 있을 수 있습니다. Index 벡터를 정렬하면 그에 따라 Values 벡터의 요소 순서가 변경되어야 합니다.
효과적인 접근 방식 중 하나는 의 요소를 쌍으로 연결하는 벡터를 만드는 것입니다. Index 벡터와 해당 인덱스. 그런 다음 이 벡터 order는 Index 벡터의 요소를 비교하는 사용자 정의 순서 함수를 사용하여 정렬할 수 있습니다. 정렬된 순서 벡터는 원하는 정렬 순서를 캡처합니다.
이 정렬 순서를 사용하여 다른 벡터의 순서를 변경할 수 있습니다. 다음 코드 조각을 고려하세요.
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); sort(order.begin(), order.end(), ordering());
ordering 함수는 Index 벡터의 값을 기준으로 order 벡터를 정렬합니다. 그런 다음 order 벡터를 사용하여 다음 코드를 사용하여 Values 벡터의 순서를 변경할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!