bAscendingOrderというBOOL型の変数をcompare関数に渡すには、ラムダ式を使用してこの変数をキャプチャします。そして、その変数をcompare関数内で使用することで、昇順か降順かを判定できるようにします。
以下のコードは、bAscendingOrderをキャプチャして、比較処理に使用する例です。
auto compare = [index, bAscendingOrder](const ItemInfo& a, const ItemInfo& b) {
if (a.values.size() <= index || b.values.size() <= index) return false;
// bAscendingOrderに基づいて比較方法を変更
if (bAscendingOrder) {
return compareWithPadding(a.values[index], b.values[index]);
} else {
return compareWithPadding(b.values[index], a.values[index]);
}
};
// ソート実行
std::sort(m_vItems.begin(), m_vItems.end(), compare);