我下面有这个c ++函数 该函数使用第一个和最后一个索引,并检查以下数字是否大于或小于下一个索引。如果是,则将x或y变量替换为当前索引的值。
这是函数:
template<class Type>
void funcExp(Type list[], int size) {
Type x = list[0];
cout << x << endl;
Type y = list[size - 1];
cout << y << endl;
for(int j = 1; j < size; j++) {
if(x < list[j]) x = list[j];
if(y > list[size - 1 - j]) y = list[size - 1 - j];
}
cout << x << endl;
cout << y << endl;
}
我主要有这个:
int list[10] = {5,3,2,10,4,19,45,13,61,11};
funcExp(List, 10);
我了解该代码如何处理数字,但是我不确定该代码如何与字符串一起工作。 例如:
string strList[] = {"One", "Hello", "Four", "Three", "How", "Six"};
funcExp(strList, 6);
返回以下输出:
x = three
y = four
我认为它正在计算每个字符,但输出却不同。 我的问题是,此函数如何处理字符串数组。
答案 0 :(得分:2)
此函数通过始终保持比较中“获胜”的值来查找数组中的最大(x
)和最小(y
)元素。
使用默认规则进行比较(除非您重载了运算符),即,对整数进行普通数字比较,对字符串进行字母顺序排序。
请注意,没有理由执行从左到右和从右到左的另一种搜索。下面的代码将更有效:
template<class Type>
void funcExp(Type list[], int size) {
Type x = list[0];
cout << x << endl;
Type y = list[0];
cout << y << endl;
for(int j = 1; j < size; j++) {
if(x < list[j]) x = list[j];
else if(y > list[j]) y = list[j];
}
cout << x << endl;
cout << y << endl;
}
答案 1 :(得分:1)
通过依次比较字母直到发现差异来比较字符串。
“四个”以“ F”开头,小于您的单词的其他任何首字母
“三个”以“ T”开头,比您单词中的其他任何首字母大
相同。