柳初心 2017-03-18 14:30 采纳率: 0%
浏览 954

对string调用swap函数,为什么迭代器会失效

#include
#include
#include
using namespace std;

int main()
{
string s1("string");
string s2("test");
vectorvec1{1,2};
vectorvec2{2,3,4,5};

vector<int>::iterator i1 =vec2.begin();
vector<int>::iterator i2 = i1 +2;//vec1.begin();

string ::iterator i3= s1.begin();
string ::iterator i4= i3+3;

cout<<&s1<<endl;
cout<<&s2<<endl;

cout<<&s1[0]<<"  "
    <<&s2[0]<<endl;

swap(s1,s2);

swap(vec1,vec2);
cout<< *i3<<" "<<*i4<<endl;
for(auto c : s1)
{
    cout<<c;
}
cout<<endl;
    for(auto c : s2)
{
    cout<<c;
}
cout<<endl;
cout<<*i1<<endl;
cout<<*i2<<endl;

cout<<&s1;


return 0;

}

vector的是内存与元素值一起改变。
但string的是为什么???
看不出哪里失效。
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 树莓派与pix飞控通信
    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题