我想按以下方式交换map的值,但它不起作用

问题描述 投票:0回答:1

这里我是一个指针,因此我也可以递增和递减,但是如果我做代码中提到的减号操作,它将不起作用

for(auto i = soldier.begin();i!=soldier.end();i++){

        int temp1 = i->first;
        int temp2 = i->second;

        i->first = (i-temp2)->first;
        i->second = (i-temp2)->second;

        (i-temp2)->first = temp1;
        (i-temp2)->second = temp2;

    }
c++ oop stl
1个回答
0
投票

这里我是一个指针,所以我也可以递增和递减,但是如果我做减号操作就不起作用了

i在您的代码中是迭代器,而不是指针。您不能减少转发迭代器。

按照问题标题的目标,您可以通过这种方式来绘制两个地图的元素:

// Data types used as key-value pair in map:
#define DT1 std::string
#define DT2 int
std::map<DT1,DT2> m;
// Insert elements 
const std::map<DT1,DT2>::iterator i1 = a.find(element1);
const std::map<DT1,DT2>::iterator i2 = a.find(element2);
if ((i1 != soldier.end()) && (i2 != soldier.end()))
    std::swap(i1->second, i2->second);
© www.soinside.com 2019 - 2024. All rights reserved.