下面这个程序
#include <iostream>
#include <vector>
#include <algorithm>
int main(){
std::vector<int> v;
for(std::vector<int>::size_type idx=0; idx<10; ++idx)
v.push_back(static_cast<int>(idx));
std::vector<int>::iterator it1 = v.begin();
std::vector<int>::iterator it2 = v.begin() + v.size()/2;
std::cout << static_cast<void*>(&*it1) << ':' << *it1
<< ' ' << static_cast<void*>(&*it2) << ':' << *it2 << '\n';
std::swap(it1,it2);
std::cout << static_cast<void*>(&*it1) << ':' << *it1
<< ' ' << static_cast<void*>(&*it2) << ':' << *it2 << '\n';
return 0;
}
编译、运行,并按预期打印
00032A28:0 00032A3C:5
00032A3C:5 00032A28:0
为了我。
如果它为您做了其他事情,那么您的编译器或标准库都已损坏。
如果它对您也一样,那么错误就在您的代码和我的代码之间的差异中。在哪里,我们不知道,因为我们不知道你的代码。