这里我是一个指针,因此我也可以递增和递减,但是如果我做代码中提到的减号操作,它将不起作用
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;
}
这里我是一个指针,所以我也可以递增和递减,但是如果我做减号操作就不起作用了
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);