|
发表于 2021-8-13 13:08:09
|
显示全部楼层
本帖最后由 cpp2019 于 2021-8-13 13:52 编辑
来一块儿玩花活
- #include <iostream>
- using namespace std;
- typedef struct _RESULT
- {
- int num[2]{ 0 };
- }RESULT;
- template<typename T1, typename T2, typename T3>
- auto Test(T1 x[], T2 size, T3 t) ->decltype(auto)
- {
- T1 max = 0, min = 1;
- for (int i = 0; i < size; i++)
- {
- max = max < x[i] ? x[i] : max;
- min = min > x[i] ? x[i] : min;
- }
- decltype(t) res;
- res.num[0] = max;
- res.num[1] = min;
- return res;
- }
- int main() {
- int array[] = { 5, 8, 3, 0, 1, 2, 4, 7, 6, 9 };
- int size = sizeof(array) / sizeof(int);
- RESULT r;
- r = Test(array, size, r);
- cout << "max=" << r.num[0] << " min=" << r.num[1] << "\n";
- short array2[] = { 4, 8, 2, 0, 1, 3, 5, 7, 6, 9 };
- size = sizeof(array2) / sizeof(short);
- RESULT r1;
- r1 = Test(array2, size, r1);
- cout << "max=" << r1.num[0] << " min=" << r1.num[1] << "\n";
- return 0;
- }
复制代码
正常的写法:
- #include <iostream>
- using namespace std;
- int *q = nullptr;
- #pragma warning(disable:4146)
- int * max_min(int x[], int size)
- {
- int max = -2147483648, min = 2147483647;
- for (int i = 0; i < size; i++)
- {
- max = max < x[i] ? x[i] : max;
- min = min > x[i] ? x[i] : min;
- }
- int *num = new int[2]{ max, min };
- return num;
- }
- void onExit()
- {
- if (nullptr != q)
- {
- delete []q;
- q = nullptr;
- }
- }
- int main() {
- atexit(onExit);
- int apple4[10] = { 5, 8, 3, 0, 1, 2, 4, 7, 6, 9 };
- int size = end(apple4) - begin(apple4);
- q = max_min(apple4, size);
- cout << "max=" << *q <<" max=" << *(q+1) << endl;
- cout << "max=" << *q <<" max=" << *(q+1) << endl;
- cout << "max=" << *q <<" max=" << *(q+1) << endl;
- cout << "max=" << *q <<" max=" << *(q+1) << endl;
- cout << "max=" << q[0] <<" max=" << q[1] << endl;
- cout << "max=" << q[0] <<" max=" << q[1] << endl;
- cout << "max=" << q[0] <<" max=" << q[1] << endl;
- return 0;
- }
复制代码 |
评分
-
查看全部评分
|