我想獲得最高座標(x, y)
以下是我寫的代碼,是這個正確的代碼。make_heap和排序x和y座標
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
struct item_t {
int x;
int y;
item_t(int h, int w) : x(h), y(w) {}
friend std::ostream& operator<<(std::ostream& os, const item_t& gt) {
os << "(" << gt.x << "," << gt.y << ")";
return os;
}
};
typedef std::vector<item_t> item_list_t;
typedef item_list_t::iterator item_list_itr_t;
struct compare_x_y {
bool operator()(const item_t& left, const item_t& right) const {
return left.x < right.x && left.y < right.y;
}
};
int main (int argc, char **argv) {
item_list_t items;
items.push_back(item_t(15, 176));
items.push_back(item_t(65, 97));
items.push_back(item_t(72, 43));
items.push_back(item_t(102, 6));
items.push_back(item_t(191, 189));
items.push_back(item_t(90, 163));
items.push_back(item_t(44, 168));
items.push_back(item_t(39, 47));
items.push_back(item_t(123, 37));
std::make_heap (items.begin(),items.end(),compare_x_y());
std::cout << "initial max heap : " << "(" << items.front().x <<"," << items.front().y << ")" << std::endl;
}
它是否適用於此輸入,但不適用於其他輸入。
定義'最高'?從字面上看,它意味着:具有最大Y座標的座標。但是你比較它們的方式顯示一個X和Y需要比另一個X和Y大。但是比較(10,1)和(9,15)呢? – 2011-12-26 14:19:47
是的,我需要安排它們,使得x和y都大於前面的x和y – Avinash 2011-12-26 14:23:09
您對最高座標的定義有些尷尬。你可以添加一些這樣的例子,它不會產生你期望的輸出嗎? – Jan 2011-12-26 14:24:15