gpt4 book ai didi

c++ - 我如何将 map 的反面复制到另一张 map ?

转载 作者:太空狗 更新时间:2023-10-29 23:46:41 24 4
gpt4 key购买 nike

例如 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..我的预期值是 10 到 1。请帮我找出答案....

最佳答案

STL map是一个有序的容器。您在迭代期间获得的项目顺序与您将项目插入容器的顺序无关。

迭代的顺序由两件事决定:

  • key 的值,以及
  • Compare类作为模板参数传递给 map

您可以以相反的顺序迭代 map (您的代码片段表明您已经知道它是如何完成的)。反向迭代 map 的性能损失(如果有的话)可以忽略不计。您还可以提供一个非默认值 Compare ( std::greater<long> 而不是默认的 std::less<long> )更改默认的迭代顺序。

关于c++ - 我如何将 map 的反面复制到另一张 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9636245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com