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