首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++排序函数

C++排序函数
EN

Stack Overflow用户
提问于 2012-02-21 15:34:41
回答 3查看 443关注 0票数 1

所以我试着让一个排序函数起作用。它应该按名字排序,但如果名字相同,它应该按姓氏排序。在where inOrder = arr行上,我一直在mySort()中得到一个错误,说“在')‘令牌之前有一个意外的主表达式”。这是怎么回事,我怎么才能修复它?我需要将我的对象传递给一个单独类中的函数。我会在粘贴盒里把它们连接起来。

这是驱动程序

代码语言:javascript
复制
#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;
}

Phone Entry Header

Phone Number Header

文本排序(http://pastebin.com/HE8Rsmbg)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-21 15:40:00

您想要传递一个引用,因此必须在函数定义/声明中将参数定义为按引用调用,这已经完成了:

代码语言:javascript
复制
bool PhoneEntry::alphaGreater(const PhoneEntry& item) const;

如您所见,PhoneEntry::alphaGreater接受一个常量PhoneEntry引用。所以只需使用

代码语言:javascript
复制
inOrder = arr.alphaGreater(arr);
票数 3
EN

Stack Overflow用户

发布于 2012-02-21 16:24:22

你的代码有几处地方出了问题。第一个问题,也是编译器抱怨的一个问题,是C++中没有后缀操作符&。我不知道您到底想用它做什么,也不知道您认为它意味着什么,但它在C++中是不存在的。

第二种方法是mySort接受对单个PhoneEntry的引用;您有一个PhoneEntry数组,因此必须选择一个来传递它。除了函数的名称和传递计数这一事实之外,还表明您确实希望传递一个数组。

我不明白mySort应该做什么。它当然不会对任何东西进行排序;事实上,它似乎基本上是一个代价高昂的no-op,因为它不返回任何东西,不修改arr,也不访问或修改任何全局状态。

对于其余部分,您需要对输入进行更多的错误检查(打开是否成功等),并且您确实应该使用std::vector,而不是C风格的数组。(在某些情况下,C样式数组是合适的,但这不是其中之一。)

更根本的是,我建议你找一本好书来研究它。(我推荐Stroustrup的编程原则和使用C++的实践。)在不了解最基本的基础知识和基本语法的情况下,您无法用任何语言编写程序。

票数 1
EN

Stack Overflow用户

发布于 2012-02-21 16:04:49

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9373787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档