ifstream ifs("1.txt");if(ifs.is_open()){
ifs.seekg(0, ios::end);
streamoff len = ifs.tellg();// streamoff == long long
cout << len << endl;}
ifs.close();
template<typenameT,typenameFUNC>voidselectionSort(T &arr, FUNC func){int n =static_cast<int>(arr.size());for(int i =0; i < n -1;++i){int idx = i;for(int j = i +1; j < n;++j){if(func(arr[j], arr[idx])){
idx = j;}}swap(arr[idx], arr[i]);}}
冒泡排序函数模板
template<typenameT,typenameFUNC>voidbubbleSort(T &arr, FUNC func){int n =static_cast<int>(arr.size());for(int i =0; i < n -1;++i){bool flag =false;for(int j =0; j < n -1- i;++j){if(func(arr[j +1], arr[j])){swap(arr[j +1], arr[j]);
flag =true;}}if(flag){break;}}}
插入排序函数模板
template<typenameT,typenameFUNC>voidinsertionSort(T &arr, FUNC func){int n =static_cast<int>(arr.size());for(int i =0; i < n;++i){int j = i;auto tmp = arr[i];while(j--){if(func(tmp, arr[j])){
arr[j +1]= arr[j];}else{break;}}
arr[j +1]= tmp;}}
快速排序函数模板
template<typenameT,typenameFUNC>voidquickSort(T &arr,int start,int end, FUNC func){int right = end;int left = start;auto key = arr[start];while(left < right){while(left < right &&!func(arr[right], key)){--right;}
arr[left]= arr[right];while(left < right &&func(arr[left], key)){++left;}
arr[right]= arr[left];}
arr[left]= key;if(start < right){quickSort(arr, start, right -1, func);}if(left < end){quickSort(arr, left +1, end, func);}}