簡體   English   中英

std :: list :: sort的用法使我的程序掛起

[英]Usage of std::list::sort hangs my program

我有一個使用C ++編寫的程序,該程序可以組織很多我想參加的大學課程。 通過從控制台獲取輸入(帶有課程代碼,描述等內容),按專業組織每門課程,然后將其全部輸出到格式良好,易於閱讀的HTML文件中,可以做到這一點。 后來,我計划通過大量研究來縮小列表的范圍。

我將每個課程都實現為一個對象,當我完成輸入信息后,該對象就會添加到列表中。 當我完成所有信息后, list::sort應該按專業和代碼對每門課程進行排序(例如,CSE 380排在CSE 110之后,而兩者都在ECO 108之前)。 之后的格式化很容易。

排序而言,我必須實現一個簡單的函數,因為即使不這樣做在技術上是有效的,但由於我的Course類沒有'<'運算符,我還是遇到了一個奇怪的錯誤。 我的功能看起來像這樣;

bool courseCompare(Course course1, Course course2) { return course1.getCode() < course2.getCode(); }

getCode()返回一個小字符串,該字符串以三字母/數字格式保存課程代碼(例如“ AMS 401”)。 顯然,這是為了促進字母順序。

我這樣稱呼sort方法;

all_the_courses.sort(courseCompare);

其中all_the_courses是一個列表。

但是,每當我使用std :: list時,程序都會停止。 不會崩潰,不提供任何輸出,只是坐在那里,當我輸入任何東西並按Enter時沒有響應。 有任何想法嗎?

您是通過值而不是引用將參數傳遞給比較函數,因此錯誤可能出在復制構造函數中。 編寫比較函數的常用方法是使用const引用,這樣可以避免完全復制對象:

bool courseCompare(const Course &course1, const Course &course2)

好吧,看來我正在以一種完全錯誤的方式來解決這個問題。 原來我的問題是完全不同的(涉及文件流)。 我需要弄清楚它是什么,但這不是排序。 一個簡單的cout (我真的應該使用前)顯示。 對不起,大家!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM