2016-07-07 6 views
-4

Я использую multimap для хранения некоторых данных с использованием openframeworks. Я могу создать мультимап, но когда я пытаюсь распечатать данные в нем, я могу распечатать адрес памяти и не получить значение.не удалось распечатать значение из multimap

ссылка (раздел "Хранение объектов в карте"): http://openframeworks.cc/ofBook/chapters/stl_map.html

.h файл:

class xyPos { 
     public: 

     float x, y; 

     xyPos(float xPos, float yPos) { 
      x = xPos; 
      y = yPos; 
    } 

    //return ofVec2f(x, y); 
}; 

static multimap<string, xyPos> posMap; 
static multimap<string, xyPos>::iterator xyMapIterator; 

.cpp файл:

for(int i = 0; i < 10; i ++) { 
    for(int j = 0; j < 10; j ++) { 
     posMap.insert(make_pair("null", xyPos(i, j)); 
    } 
} 

я также пытался:

for(int i = 0; i < 10; i ++) { 
    for(int j = 0; j < 10; j ++) { 
     xyPos *p = new xyPos(i, j); 
     xyMap.insert(make_pair("null", *p); 
    } 
} 

cout << "xyMap:\n"; 
for(xyMapIterator = xyMap.begin(); xyMapIterator != xyMap.end(); ++ xyMapIterator) { 
    cout << (*xyMapIterator).first << " => " << (*xyMapIterator).second << "\n"; 
} //will only compile with &(*xyMapIterator).second so i only have ["null", memory address] in the output 
+1

Cut вниз с использованием [mcve] и обнаружить, что это не имеет абсолютно ничего общего с 'multimap' или итерации. – juanchopanza

ответ

0

Этот код даже не компилируется.

Во всяком случае, (*xyMapIterator).second (который может быть записан в виде xyMapIterator->second) имеет тип xyPos, так что вы не можете распечатать его с помощью cout.

Возможно, вам необходимо распечатать его значения:

std::cout << xyMapIterator->second.x << "," << xyMapIterator->second.y << std::endl; 
+0

Возможно, я написал это неправильно, так как это не совсем то же самое, что и код в моей программе. простите за это. однако, спасибо за ответ. я не думал печатать его таким образом. – scribblePeople