提问人:IWantAPassForChristmas 提问时间:10/9/2023 更新时间:10/9/2023 访问量:47
如何创建一个模板升序排序函数来接收任何类型的数据(int、char *、custom)?
How can I create a template ascending sort function that takes in any type of data (int, char *, custom)?
问:
就像标题所描述的一样,我正在尝试创建一个函数,该函数可以按升序对任何数据类型向量进行排序。现在我正在使用的只是一个标准的排序函数:
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
我正在尝试修改此代码,以便能够用于 char * 之类的东西。
我已经在我的自定义函数中为“>”和“<”创建了重载运算符,但我意识到默认情况下我无法以比较整数的方式调用它们。我真的不知道接下来该尝试什么,而且似乎无法理解它。我想我需要一个不同的函数,他们的排序函数至少会调用我的自定义数据类型,但我不知道我会在其中放什么以及主排序函数会是什么样子。
我的另一个想法是为整数、char * 和自定义数据类型创建 3 个较小的函数,每个函数将分别在 main 排序函数中调用,但那时我不知道如何使 main 成为模板函数,或者它是否甚至是一个模板函数。
任何建议都值得赞赏。
答: 暂无答案
评论
operator>
operator<
std::greater
吗?您知道如何将函数对象传递给函数模板吗?std::sort
std::sort