2016-03-21 7 views
0

olarak depolamak için bir harita oluşturuyorum İki yapılıyım. 2B'de bir nokta koordinat sistemi saklamak için bir: bununla birlikte koordine ve sütun numarası saklamak içinYapı koordinatını anahtar ve satır numarası olarak

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

başka.

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

Koordinatı Anahtar ve BlobInformation içerikleri olarak değer olarak depolayan bir harita oluşturmaya çalışıyorum.

Anahtarı eklemek için denemek

, değer çifti bana aşağıdaki hatayı veriyor:

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

Lütfen sorunuzu okuyun ve kendinize sorun "Bunu cevaplayabilir miyim?" –

+0

"Koordinat", operatör için bir aşırı yüklenme uygulamalıdır <() 'veya [' Compare'] (http://en.cppreference.com/w/cpp/container/map) şablon parametresi için uygun bir işlev belirtmeniz gerekir. –

cevap

0

std::map yani o < operatörü ile Onun anahtarları sıralar, sıralanmış bir kapsayıcıdır. Coordinate bir tane uygulamadı, bu yüzden bu hatayı görüyorsunuz. Bunu uygulayabilirsiniz (bool operator<(const Coordinate& rhs);, veya anahtarlarını sıralayan bir std::unordered_map kullanın.)