柳初心 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 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料