什麼是太修復下面的代碼最優雅的方式:解決它是動得少<到 空間std的定義(提供小於運算符一對中的一個元素
#include <vector>
#include <map>
#include <set>
using namespace std;
typedef map< int, int > row_t;
typedef vector<row_t> board_t;
typedef row_t::iterator area_t;
bool operator< (area_t const& a, area_t const& b) {
return(a->first < b->first);
};
int main(int argc, char* argv[])
{
int row_num;
area_t it;
set< pair< int, area_t > > queue;
queue.insert(make_pair(row_num, it)); // does not compile
};
的一種方式我知道, 你不應該這樣做。)
namespace std {
bool operator< (area_t const& a, area_t const& b) {
return(a->first < b->first);
};
};
另一個明顯的解決方案是小於<爲定義pair < int,area_t>但我想避免這種情況,並且 能夠定義運算符僅限於未定義的對的一個元素 。
這是一個有趣的名字,你在那裏設置;) – 2010-02-24 19:56:18
什麼是名字?任何其他名字的玫瑰都會聞到甜味。 – 2010-02-24 22:23:44