ソートアルゴリズムを色々と自作して比較しています(SelectionSort
, InsertionSort
, QuickSort
, MergeSort
, BubbleSort
, std::sort
, std::stable_sort
)。
自作のもののシグネチャはいずれも下記と同様です。
C++
1template<class Iterator, class Compare> 2void SelectionSort(Iterator begin, Iterator end, Compare comp)
それぞれの実行時間と内部でのcomp
の呼び出し回数を調べるために、下記のようなコードを関数の数だけ書いています。
関数名にまつわる部分を除けばほとんど同じなので、std::vector
に関数をまとめてstd::vector<func> functions{SelectionSort, InsertionSort}
のようにループを回したいです。
どうvector
を書けば動くのでしょうか?
C++
1 auto list{unsorted_list}; 2 int selection_cnt = 0; 3 auto selection_time = MeasureRuntime([&list, &selection_cnt]() { 4 return SelectionSort(std::begin(list), 5 std::end(list), 6 [&selection_cnt](const int &lhs, const int &rhs) { 7 ++selection_cnt; 8 return lhs < rhs; 9 }); 10 });
コード全文 [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
追記
下記のようにfunction
を試してみたのですが、エラーになります。
C++
1using Iterator = std::vector<int>::iterator; 2using Compare = std::function<bool(int, int)>; 3 4int main() { 5 std::vector<std::function<void(Iterator, Iterator, Compare)>> functions{SelectionSort, std::sort}; 6}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/19 11:33 編集
2020/05/20 01:07
2020/05/20 02:03 編集
2020/05/20 02:45
退会済みユーザー
2020/05/20 02:50
2020/05/20 03:06