python과 java에 이어서 cpp로도 개발하는 일도 있으니, 여기도 정리함
배열 정렬 후 결과를 값으로 출력하는 것도 자주 사용되지만..
배열의 인덱스로 결과를 출력 할 때 참고하고자 정리함
다른 언어로 테스트한 예제 포스팅 링크
(python) sorted list of indices 예제
(java) sorted list of indices 예제
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> ary = {102, 67, 35, 77, 153};
std::sort( std::begin(ary), std::end(ary));
for (auto v : ary)
std::cout << v << ' ';
std::cout << std::endl;
ary = {102, 67, 35, 77, 153};
std::vector<int> indexes(ary.size());
std::size_t n(0);
std::generate(std::begin(indexes), std::end(indexes), [&]{ return n++; });
std::sort( std::begin(indexes),
std::end(indexes),
[&](int obj1, int obj2) { return ary[obj1] < ary[obj2]; } );
for (auto v : indexes)
std::cout << v << ' ';
std::cout << std::endl;
return 0;
}
----- 출력 -----
35 67 77 102 153
2 1 3 0 4
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> ary = {102, 67, 35, 77, 153};
std::sort( std::begin(ary), std::end(ary), std::greater<int>());
for (auto v : ary)
std::cout << v << ' ';
std::cout << std::endl;
ary = {102, 67, 35, 77, 153};
std::vector<int> indexes(ary.size());
std::size_t n(0);
std::generate(std::begin(indexes), std::end(indexes), [&]{ return n++; });
std::sort( std::begin(indexes),
std::end(indexes),
[&](int obj1, int obj2) { return ary[obj1] > ary[obj2]; } );
for (auto v : indexes)
std::cout << v << ' ';
return 0;
}
----- 출력 -----
153 102 77 67 35
4 0 3 1 2
cpp 정리도 끝
그럼, 이만!
다른 언어로 테스트한 예제 포스팅 링크
(python) sorted list of indices 예제
(java) sorted list of indices 예제