C++排序函数

C++ Sorting Function

本文关键字:函数 排序 C++      更新时间:2023-10-16

所以我正在尝试让一个排序函数工作。它应该按名字排序,但如果名字相同,它应该按姓氏排序。我在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++的编程原理和实践。)你不可能在不了解以下内容的情况下用任何语言编写程序最基本的基础知识和基本语法。

您也可以将其作为指针传递给