ACM 一種排序(操作符過載 vector排重)

2021-09-30 11:55:48 字數 1146 閱讀 1531

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:3 描述

現在有很多長方形,每乙個長方形都有乙個編號,這個編號可以重複;還知道這個長方形的寬和長,編號、長、寬都是整數;現在要求按照一下方式排序(預設排序規則都是從小到大);

1.按照編號從小到大排序

2.對於編號相等的長方形,按照長方形的長排序;

3.如果編號和長都相同,按照長方形的寬排序;

4.如果編號、長、寬都相同,就只保留乙個長方形用於排序,刪除多餘的長方形;最後排好序按照指定格式顯示所有的長方形;

輸入第一行有乙個整數 0

輸出 順序輸出每組資料的所有符合條件的長方形的 編號 長 寬

用來練習 操作符過載、以及vector排重 (用set 效能會更優)

//

// main.cpp

// 碼排序

//// created by h@l on 14-6-19.

//#include #include #include using namespace std;

class rectangular

;bool rectangular::operator< (const rectangular &data)const

;bool rectangular::operator== (const rectangular &data)const

istream &operator>> (istream &scin,rectangular &data)

ostream &operator<< (ostream &scout, rectangular&data)

int main()

sort(vdatabuf.begin(),vdatabuf.end(),less());

//刪除重複 unique 返回相鄰相等

vdatabuf.erase(unique(vdatabuf.begin(), vdatabuf.end()),vdatabuf.end());

for (vector::iterator ipos=vdatabuf.begin(); ipos != vdatabuf.end(); ipos++)

}return 0;

}

操作符過載 一

一,運算子過載的基礎知識 1.什麼是運算子過載 所謂的過載,就是重新賦予新的含義。函式的過載是讓乙個已經存在的函式賦予乙個新的含義,使之實現新的功能。因此,乙個函式名就可以用來代表不同功能的函式。運算子的過載其實我們已經使用過了,例如常見的 加法操作就是c 預設過載的,我們可以用加法對整數,單精度,...

操作符過載(一)

目錄2.複數類的實現 3.賦值操作符過載和拷貝建構函式 操作符過載的本質是用特殊形式的函式擴充套件操作符的功能 在進行操作符過載時,必須遵循以下三條規則 全域性函式和成員函式都可以實現對操作符的過載,過載為全域性函式的語法規則為 sign為預定義的操作符,如 lp和rp分別為左運算元和右運算元.ty...

南陽ACM8 一種排序

一種排序 時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在有很多長方形,每乙個長方形都有乙個編號,這個編號可以重複 還知道這個長方形的寬和長,編號 長 寬 都是整數 現在要求按照一下方式排序 預設排序規則都是從小到大 1.按照編號從小到大排序 2.對於編號相等的長方形,按...