정수 벡터가 있다고 가정 해보십시오.
std::vector<int> indices;
for (int i=0; i<15; i++) indices.push_back(i);
그런 다음 내림차순으로 정렬합니다.
sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];})
for (int i=0; i<15; i++) printf("%i\n", indices[i]);
이것은 다음을 생성합니다.
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
이제 숫자 3, 4, 5 및 6을 끝으로 옮기고 내림차순을 유지하고 싶습니다 (바람직하게 sort
는 두 번째 로 사용하지 않아도 됨 ). 즉, 여기 내가 원하는 것입니다 :
14
13
12
11
10
9
8
7
2
1
0
6
5
4
3
그것을 std::sort
달성하기 위해 의 비교 함수를 어떻게 수정해야 합니까?
간단한 내림차순 정렬 을 위해 람다 대신
—
sweenish
std::greater
에서를 <functional>
사용할 수 있습니다. 귀하의 질문에 관해서는, 귀하가 원하는 방식으로 가치를 비교하는 가장 자세한 비교기를 작성하는 것이 가장 쉬운 방법 일 수 있습니다.
@ acraig5075는 내림차순으로이어야합니다
—
ks1322
return first > second
.
@ acraig5075 뭔가 빠진 것 같은 느낌이 들거나 사람들은 오름차순 과 내림차순 의 차이점을 모르 십니까?
—
sweenish
아마 당신은 std :: rotate ?
—
슈퍼
return indices[first] > indices[second]
당신은 의미하지return first < second;
않습니까?