例如,map1將從某個地址(開始到結束)取值1到10。 我想有值10〜1對應於MAP2地址(開始完)我如何將地圖的反向複製到另一張地圖?
map<long , int* > v;
map<long , int* > rv;
int i,a[10];
for(i=0; i<10; i++)
{
a[i] = i+1;
v.insert(pair<long, int *>(i+1,&a[i]));
}
itr = v.begin();
while(itr != v.end())
{
cout << itr->first << " "<<itr->second;
cout << endl;
itr++;
}
rv.insert(v.rbegin(),v.rend());
cout << "copied array: "<<endl;
itr = rv.begin();
while(itr != rv.end())
{
cout << itr->first << " "<<itr->second;
cout << endl;
itr++;
}
我嘗試了上述之一,但我得到的值1至10 only..my預期值10到1 請幫助我找出....
pair tempPair;長x = 0; int * p = NULL; map :: reverse_iterator r = v.rbegin(); while(r!= v.rend()){x = r-> first; p =(int *)r-> second; cout << x <<「」<< p; cout << endl; tempPair(X,P); rv.insert(tempPair); [R ++; }我試圖這樣做,但爲此,我得到錯誤「錯誤:沒有匹配調用'(std :: pair )(long int&,int *&)'編譯終止' –
Raj
2012-03-09 15:07:23
地圖排序依據它的關鍵。 – PlasmaHH 2012-03-09 15:19:28
@Raj:您的評論中的錯誤是因爲您在實際擁有初始值之前過早用C風格定義'tempPair'。只要寫'pair tempPair(x,p)'來定義它,當你有初始值的時候。 –
MSalters
2012-03-09 15:24:37