C++排序函数
C++ Sorting Function
所以我正在尝试让一个排序函数工作。它应该按名字排序,但如果名字相同,它应该按姓氏排序。我在mySort()
中不断收到一个错误,在inOrder = arr
所在的行上显示"在')'标记之前出现意外的主表达式"。这是怎么回事?我该怎么解决?我需要将我的对象传递到一个单独类中的函数中。我会把它们链接到pastebin中。
这是的驱动程序
#include <iostream>
#include <fstream>
#include <string>
#include "phoneEntry.h"
using namespace std;
void mySort(PhoneEntry& arr, int size)
{
bool inOrder = false;
for (int i = size - 1; i > 0 && !inOrder; i--)
{
inOrder = true;
for (int j = 0; j < i; j++)
{
inOrder = arr.alphaGreater(arr&);
}
}
};
int main()
{
const int MAXNUM = 500;
PhoneEntry entry[MAXNUM];
ifstream filezilla;
filezilla.open("phone.txt");
int count = 0;
if(filezilla)
{
while(count < MAXNUM && entry[count].readEntry(filezilla))
{
count++;
}
mySort(entry&, count);
for(int i = 0; i < count; i++)
{
entry[i].writeEntry(cout) << endl;
}
}
else
{
cout << "Four Oh Four - File Not Found" << endl;
}
return 0;
}
电话输入标题
电话号码头
排序文本(http://pastebin.com/HE8Rsmbg)
您想要传递引用,因此必须在函数定义/声明中将参数定义为引用调用,这已经完成:
bool PhoneEntry::alphaGreater(const PhoneEntry& item) const;
如您所见,PhoneEntry::alphaGreater
采用常量PhoneEntry
引用。所以只需使用
inOrder = arr.alphaGreater(arr);
您的代码有几个问题。第一个编译器抱怨的是并没有后缀运算符&
在C++中。我不知道你到底想用它做什么,或者你认为这意味着什么,但它在C++中并不存在。
第二种是mySort
引用单个PhoneEntry
;你有一个PhoneEntry
的数组,所以你必须选择一个来传递除了函数的名称和传递count也表明你真的想传递一个数组。
我不知道mySort
应该做什么。它当然什么都不分类;事实上,它似乎从根本上一个昂贵的no-op,因为它不返回任何东西,也不修改arr
,并且它不访问或修改任何全局状态。
对于其余部分,您需要对输入进行更多的错误检查(打开成功等等),并且您确实应该使用std::vector
而不是C型数组。(在某些情况下,C型数组合适,但这不是其中之一。)
更重要的是,我建议你找一本好书好好学习推荐Stroustrup的使用C++的编程原理和实践。)你不可能在不了解以下内容的情况下用任何语言编写程序最基本的基础知识和基本语法。
您也可以将其作为指针传递给
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- std::sort()函数无法对向量的一部分进行排序
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 用于合并排序的合并函数
- 如何计算此排序函数的时间复杂度?
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 自定义排序函数中的堆溢出
- 分段 排序函数实现中的错误
- 使用模板化分配器和对向量进行排序的函数
- 为什么我的函数接受"std::string"进行排序不会改变它?
- 对没有比较器或λ函数的向量进行排序?
- C++中的析构函数和构造函数排序
- 数组中的函数排序错误
- 如何命名比较谓词函数排序向量
- 按lexicographical_compare()函数排序
- 构造函数排序(全局作用域)问题
- 按接受c++中参数的函数排序
- 函数排序错误
- 根据不同函数排序的std::向量的交集