我用我的next_permutation功能的自定義比較函數,但我不明白爲什麼我得到的錯誤:next_permutation與自定義比較函數C++
Expression: invalid operator<
我想我的功能一起工作至少這些限制在函數體中,但不斷收到錯誤:
bool mycomp(int i, int j)
{
return (((i < 0) && (j > 0)) || ((i > 0) && (j < 0)));
};
但是當我像這樣做,它工作正常:
bool mycomp(int i, int j)
{
return (((i < 0) && (j > 0)));
};
我想也添加另一個限制,但不知道如何。 這裏是有關代碼與next_permutation功能:
int counter, size, *guests;
for (int i = 2; i <= 9; i++)
{
size = i * 2;
counter = 1;
guests = new int[size];
for (int j = 0; j < size; j += 2)
{
guests[j] = counter;
guests[j + 1] = 0 - counter;
++counter;
}
sort(guests, guests + size);
counter = 0;
while (next_permutation(guests, guests + size, mycomp))
{
++counter;
}
}
我也明白,有一個嚴格的弱序要求。我在閱讀後明白了它的主旨,但不確定它是如何適用於這種情況的。先謝謝你。
您認爲自定義比較器功能的作用是什麼?你認爲它意味着什麼*使用給定的自定義比較器?你對「限制」的使用對我來說是一個紅旗。 – Yakk
使用你的第一個功能沒有錯誤:現場演示:http://coliru.stacked-crooked.com/a/8abe254b696f6df8 – Steephen
@Stephen:這是默默地失敗。 OP有機會獲得調試斷言檢查其比較器的有效性 – quantdev