swap交换的是变量标识符还是元素?

wpalhm wpalhm 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


list<int> ilst1(10, 2);
list<int> ilst2(10, 3);
list<int>::iterator iter1 = ilst1.begin();
list<int>::iterator iter2 = ilst2.begin();
ilst1.swap(ilst2);
cout << "指向原来list1第一个元素的迭代器现在的值: " << *iter1
<< "\n指向原来list2第一个元素的迭代器现在的值: " << *iter2 << endl;

按书上的说法是:
交换内容:调用完函数后,list1中存放的是list2原来的元素,list2中存放的则是list1原来的元素.list1和list2类型必须相同.改函数的执行速度通常比将list2中的元素复制到list1操作快.
请问到底是交换的元素还是交换了list1和list2这两个变量标识符.如果是交换的元素.怎么可能指向原来位置的迭代器指向的还是同一个值?如果是交换变量标识符,又是怎么做到的?
...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
wpalhm
C++ 语言 65,214 成员 250,514 内容