C++ next_permutation如何定制比較函數(shù)

c++
小樊
87
2024-07-13 04:24:27

在C ++中使用next_permutation時(shí),可以通過(guò)自定義比較函數(shù)來(lái)指定排序規(guī)則。比較函數(shù)必須滿(mǎn)足嚴(yán)格弱序關(guān)系,即滿(mǎn)足反對(duì)稱(chēng)性、傳遞性和非對(duì)稱(chēng)性。

下面是一個(gè)示例,在next_permutation中使用自定義的比較函數(shù),該比較函數(shù)將按照數(shù)字的絕對(duì)值大小進(jìn)行排序:

#include <iostream>
#include <algorithm>
#include <vector>

bool compareAbs(int a, int b) {
    return abs(a) < abs(b);
}

int main() {
    std::vector<int> vec = {3, -1, 4, -5, 2};
    
    std::sort(vec.begin(), vec.end(), compareAbs);
    
    do {
        for (int i : vec) {
            std::cout << i << " ";
        }
        std::cout << std::endl;
    } while (std::next_permutation(vec.begin(), vec.end(), compareAbs));
    
    return 0;
}

在上面的示例中,compareAbs函數(shù)指定了按照數(shù)字的絕對(duì)值大小進(jìn)行排序。然后在std::sortstd::next_permutation函數(shù)中傳入該比較函數(shù),從而實(shí)現(xiàn)按照絕對(duì)值大小進(jìn)行排序和生成排列。

0