最近刚开始学习c++容器,发现容器中提供的swap()函数并不是交换了两个容器的内容,而是交换了两个容器的地址。比如如下代码:
输出为:
可见容器a、b只是交换了指向的地址。那c++提供的std::swap()是否也是只交换地址呢,这里我们来实验一下。
输出的结果为:
可见,交换 a、b的同时,指针指向的内存内容同时也改变了,说明此时交换的是 a、b变量中的内容,而不是改了a、b的地址。如果a、b是两个数组,swap(a,b) 就等同于代码中的swap(pa,pb)。交换的也是a、b的内容(此时a、b内存的是数组首变量地址),在效果上类似于a、b数组交换了。
一点愚见,欢迎指正。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/7901.html