|
发表于 2019-11-6 12:30:18
|
显示全部楼层
- #include <iostream>
- #include <vector>
- #include <cstring>
- template <typename ty, size_t count>
- //内置数组版本
- ty max(ty(&arr)[count]) //求数组最大值
- {
- ty tmp = arr[0];
- for(size_t i = 0; i < count; i++)
- {
- tmp = tmp > arr[i] ? tmp : arr[i];
- }
- return tmp;
- }
- //可变数组版本
- template <typename ty>//求数组最大值
- ty max(std::vector<ty> &vec)
- {
- ty tmp = vec[0];
- for(ty arg : vec)
- {
- tmp = tmp > arg ? tmp : arg;
- }
- return tmp;
- }
- //字符串版本
- template <typename ty, size_t count>
- const char *max(const char *(&ptr)[count]) //---->此处翻车
- /*模板函数具体化.返回最长字符串的地址*/
- {
- const char *max = ptr[0];
- for(size_t i = 1; ptr[i]; ++i)
- {
- if(strlen(max) < strlen(ptr[i]))
- max = ptr[i];
- }
- return max;
- /*const char *p = ptr[0];
- for(const char* i = *ptr; *i != '\0'; i++)
- {
- p = strlen(p) > strlen(i) ? p : i;
- }
- return p;*/
- }
- int main(int argc, char const *argv[])
- {
- int arr[] = {1, 2, 3, 6, 54, 79, 99};
- std::cout << "内置类型数组版本 :" << max(arr) << std::endl;
- std::vector<float> vec = {3.14, 2.718, 3.163, 1.414, 2.236};
- std::cout << "vector版本 :" << max(vec) << std::endl;
-
- //const char *str[4] = {"hello", "fish999999999", "ccc11111", " 0000"};//-->此处翻车
- const char *str[] = {"hello", "fish999999999", "ccc11111", " 0000", NULL};
- std::cout << "C字符串版本 :" << max<char>(str) << std::endl;
- return 0;
- }
复制代码 |
|