3 つの要素をソートするテンプレート関数を実行しようとしています。numbers
(int, double) は正常に動作しますが、文字列は期待どおりに動作しません。
#include <cstdlib>
#include <algorithm>
#include <iostream>
using namespace std;
template<typename TYPE>
void sort3(TYPE n1, TYPE n2, TYPE n3) {
TYPE arr[3];
arr[0] = n1;
arr[1] = n2;
arr[2] = n3;
sort(arr, arr + 3);
for (int i = 0; i < 3; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main(int argc, char** argv) {
sort3("B", "Z", "A");
sort3(10.2, 99.0, 1.9);
sort3(200, 50, 1);
return 0;
}
次の出力が得られます。
AZB
1.9 10.2 99
1 50 200
私の理解でsort3("B", "Z", "A");
は、オンラインコンパイラA B Z
で同じ結果が得られるため、OS固有ではないことがわかり
ます。