在C++中,qsort
函數用于對數組進行排序
假設你有一個指針數組,其中每個指針指向一個整數。你需要根據這些整數對指針數組進行排序。以下是一個示例:
#include <iostream>
#include <cstdlib>
// 比較函數,用于比較兩個整數
int compare(const void *a, const void *b) {
int int_a = *(int *)a;
int int_b = *(int *)b;
return (int_a - int_b);
}
int main() {
// 創建一個指針數組
int *ptr_array[] = {new int(5), new int(1), new int(9), new int(3)};
// 獲取指針數組的大小
int size = sizeof(ptr_array) / sizeof(ptr_array[0]);
// 使用qsort對指針數組進行排序
qsort(ptr_array, size, sizeof(int *), compare);
// 輸出排序后的指針數組
for (int i = 0; i < size; ++i) {
std::cout << "Value: " << *(ptr_array[i]) << std::endl;
delete ptr_array[i]; // 釋放內存
}
return 0;
}
在這個示例中,我們首先定義了一個比較函數compare
,它接受兩個const void *
類型的參數。然后,我們使用qsort
函數對指針數組進行排序,傳入指針數組的大小、每個元素的大小(使用sizeof
操作符)以及比較函數。最后,我們遍歷并輸出排序后的指針數組,并釋放分配的內存。