私は次のものを持っています、それはマップの最初のすなわち0番目のノードを返しているようです。このコードの何が問題なのか理解できません。
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
}
ここで欠けているものはありますか?DIは、オブジェクトを事前に割り当ててから、挿入操作に供給する必要があります。STLマップで事前に割り当てる必要はないと思います。おかげで、その面での助けをいただければ幸いです。