2016-03-21 88 views
0

我有兩個結構。一個用於在2D座標系中存儲點:創建存儲結構座標的映射關鍵字和行號作爲值

struct Coordinate { 
int x, y; 
Coordinate() {}; 
Coordinate(int x, int y) : x(x), y(y) {}; 
} cr; 

另一個用於存儲座標和列號以及它。

struct BlobInformation { 
Coordinate point; 
int PixelValues[6]; 
int line; 
int column; 
char value; 
} bi; 

我試圖創建一個地圖,它將座標作爲Key和BlobInformation內容存儲爲值。

當我嘗試插入鑰匙,值對它給了我下面的錯誤:

Severity Code Description Project File Line Suppression State 
Error C2678 binary '<': no operator found which takes a left-hand  operand of type 'const Coordinate' (or there is no acceptable conversion) braille_obr c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstddef 240 
+1

請仔細閱讀您的問題,並問問自己:「我可以回答嗎?」 –

+0

'Coordinate'必須爲'operator < )'或者你需要爲['Compare'](http://en.cppreference.com/w/cpp/container/map)模板參數指定一個適當的函數。 –

回答

0

std::map是一個有序的容器,即它與<運營商對其進行排序鍵。 Coordinate沒有實現一個,這就是爲什麼你看到這個錯誤。您可以執行它(bool operator<(const Coordinate& rhs);或使用std::unordered_map,它不會對其鍵進行排序)