こちら(https://yukicoder.me/problems/no/750)の問題のコードで、入力された分数をソートして出力するものになっています。
わからない内容としては
①str::qsortの第4引数であるcompareの関数になぜ引数が与えられていないのか
②compare関数はconst void型のポインタを構造体s型のポインタにキャストしていますが、関数が構造体やクラスのメンバ変数を参照する場合は、基本的にconst void型ポインタを使うという理解でいいのでしょうか?
③compareの戻り値は常に0になると思いますが、qsortの処理とはどのように対応するのでしょうか?
cpp
1#include <iostream> 2using namespace std; 3 4struct s { 5 int A, B; 6}; 7 8int compare(const void *x, const void *y) { 9 return ((s*)x)->B * ((s*)y)->A - ((s*)x)->A * ((s*)y)->B; 10} 11 12int main() { 13 int n; 14 cin >> n; 15 s frac[n]; 16 for (int i = 0; i < n; ++i) cin >> frac[i].A >> frac[i].B; 17 qsort(frac, n, sizeof(s), compare); 18 for (int i = 0; i < n; ++i) cout << frac[i].A << ' ' << frac[i].B << endl; 19}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/09 06:51