例如,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