#include <iostream>
#include <string.h>
#include <time.h>
using namespace std;
template <typename T>
auto maxn(const T * pArr, int n)->decltype (*pArr)
{
int f(0);
for (int i = 0; i < n; i++)
if (pArr[i] > pArr[f])
f = i;
return pArr[f];
}
template <>
auto maxn<const char *>(const char * const *pArr, int n)->decltype(*pArr)
{
int *pArr1 = new int [n];
for (int i = 0; i < n; i++)
pArr1[i] = strlen(pArr[i]);
int f(0);
for (int i = 0; i < n; i++)
if (pArr1[i] > pArr1[f])
f = i;
delete [] pArr1;
return pArr[f];
}
int main(int argc, char* argv[])
{
srand(unsigned (time(0)));
const int k = 5;
int *pArr = new int [k];
for (int i = 0; i < k; i++)
pArr[i] = rand() % 11;
for (int i = 0; i < k; i++)
cout << pArr[i] << ' ';
cout << endl;
cout << "The max member of array is " << maxn(pArr, k) << endl;
delete [] pArr;
double *pArr1 = new double [k];
for (int i = 0; i < k; i++)
pArr1[i] = i * 0.5;
for (int i = 0; i < k; i++)
cout << pArr1[i] << ' ';
cout << endl;
cout << "The max member of array is " << maxn(pArr1, k) << endl;
delete [] pArr1;
char str[k][15] = {"Hello!", "Good bye!", "What's up!", "Yo, man!", "Hi, byotch!"};
char **ppStr = new char *[k];
for (int i = 0; i < k; i++)
ppStr[i] = new char [20];
for (int i = 0; i < k; i++)
memcpy(ppStr[i], str[rand() % 5], 20);
for (int i = 0; i < k; i++)
cout << ppStr[i] << endl;
cout << maxn(ppStr, k) << endl;
for (int i = 0; i < k; i++)
delete [] ppStr[i];
delete [] ppStr;
// if (_CrtDumpMemoryLeaks())
// cout << "Memory Leaks\n";
// else
// cout << "All good\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx0aW1lLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmF1dG8gbWF4bihjb25zdCBUICogcEFyciwgaW50IG4pLT5kZWNsdHlwZSAoKnBBcnIpCnsKICAgIGludCBmKDApOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgaWYgKHBBcnJbaV0gPiBwQXJyW2ZdKQogICAgICAgICAgICBmID0gaTsKICAgIHJldHVybiBwQXJyW2ZdOwp9CnRlbXBsYXRlIDw+CmF1dG8gbWF4bjxjb25zdCBjaGFyICo+KGNvbnN0IGNoYXIgKiBjb25zdCAqcEFyciwgaW50IG4pLT5kZWNsdHlwZSgqcEFycikKewogICAgaW50ICpwQXJyMSA9IG5ldyBpbnQgW25dOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgcEFycjFbaV0gPSBzdHJsZW4ocEFycltpXSk7CiAgICBpbnQgZigwKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIGlmIChwQXJyMVtpXSA+IHBBcnIxW2ZdKQogICAgICAgICAgICBmID0gaTsKICAgIGRlbGV0ZSBbXSBwQXJyMTsKICAgIHJldHVybiBwQXJyW2ZdOwp9CmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKICAgIHNyYW5kKHVuc2lnbmVkICh0aW1lKDApKSk7CiAgICBjb25zdCBpbnQgayA9IDU7CiAgICBpbnQgKnBBcnIgPSBuZXcgaW50IFtrXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgazsgaSsrKQogICAgICAgIHBBcnJbaV0gPSByYW5kKCkgJSAxMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgazsgaSsrKQogICAgICAgIGNvdXQgPDwgcEFycltpXSA8PCAnICc7CiAgICBjb3V0IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJUaGUgbWF4IG1lbWJlciBvZiBhcnJheSBpcyAiIDw8IG1heG4ocEFyciwgaykgPDwgZW5kbDsKICAgIGRlbGV0ZSBbXSBwQXJyOwogCiAgICBkb3VibGUgKnBBcnIxID0gbmV3IGRvdWJsZSBba107CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykKICAgICAgICBwQXJyMVtpXSA9IGkgKiAwLjU7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykKICAgICAgICBjb3V0IDw8IHBBcnIxW2ldIDw8ICcgJzsKICAgIGNvdXQgPDwgZW5kbDsKICAgIGNvdXQgPDwgIlRoZSBtYXggbWVtYmVyIG9mIGFycmF5IGlzICIgPDwgbWF4bihwQXJyMSwgaykgPDwgZW5kbDsKICAgIGRlbGV0ZSBbXSBwQXJyMTsKIAogICAgY2hhciBzdHJba11bMTVdID0geyJIZWxsbyEiLCAiR29vZCBieWUhIiwgIldoYXQncyB1cCEiLCAiWW8sIG1hbiEiLCAiSGksIGJ5b3RjaCEifTsKICAgIGNoYXIgKipwcFN0ciA9IG5ldyBjaGFyICpba107CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykKICAgICAgICBwcFN0cltpXSA9IG5ldyBjaGFyIFsyMF07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykKICAgICAgICBtZW1jcHkocHBTdHJbaV0sIHN0cltyYW5kKCkgJSA1XSwgMjApOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrOyBpKyspCiAgICAgICAgY291dCA8PCBwcFN0cltpXSA8PCBlbmRsOwogICAgY291dCA8PCBtYXhuKHBwU3RyLCBrKSA8PCBlbmRsOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrOyBpKyspCiAgICAgICAgZGVsZXRlIFtdIHBwU3RyW2ldOwogICAgZGVsZXRlIFtdIHBwU3RyOwovLyAgICBpZiAoX0NydER1bXBNZW1vcnlMZWFrcygpKQovLyAgICAgICAgY291dCA8PCAiTWVtb3J5IExlYWtzXG4iOwovLyAgICBlbHNlCi8vICAgICAgICBjb3V0IDw8ICJBbGwgZ29vZFxuIjsKICAgIHJldHVybiAwOwp9