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

对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 keil的map文件中Image component sizes各项意思
    • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
    • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
    • ¥15 划分vlan后,链路不通了?
    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 Centos / PETGEM
    • ¥15 划分vlan后不通了
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)