2
我有以下內容,它似乎返回地圖中的第一個,即第0個節點。我無法弄清楚這個代碼有什麼問題。STL map.find返回不正確的元素
map.find總是返回第一個(第0個)元素。無論在「插入」調用中構造什麼輸入。
我對STL有點新,所以任何幫助,將不勝感激。 有什麼我在這裏失蹤?
class numbers{
public :
unsigned int data;
numbers(unsigned int value) {
data=value;
}
};
bool operator<(numbers a, numbers b){
return (a.data<b.data)?a.data:b.data;
}
class names{
public:
string s;
names(int value) {
char arr[10];
itoa(value, arr, 10);
s=arr;
}
void print(){cout<<s;}
};
void main(){
map<numbers, names> bigmap;
for(int i=0;i<1000;i++)
bigmap.insert(pair<numbers,names>(numbers(i), names(i)));
cout<<"Inserted!";
map<numbers, names>::iterator p;
p=bigmap.find(numbers(10));
p->second.print();//output is always 0
getchar();
//Large Lookup test
}
有什麼,我在這裏失蹤? D我需要預先分配對象,然後提供給插入操作。我不認爲STL地圖要求將它們預先分配。 謝謝,任何幫助,在這方面將不勝感激。
Thnx,我想我錯過了。 – confusednerd 2012-08-08 07:20:34