当前位置:   article > 正文

C++STL中swap函数操作与内存地址改变的简析_stl swap

stl swap

写在前面
这篇文章主要讨论了STL中swap函数在交换2个容器的内容的时候是交换内存还是交换元素的问题。由于博主对C++的学习并不好,如果有什么错误恳请大家提出。下面会有一些代码展示一下swap函数在对容器进行交换的时候对内存地址的影响,感兴趣的同学也可以自己写一下代码,会更加直观理解swap函数。

先放结论
swap函数会交换2个数据类型相同的容器内容。本身交换的速度非常快,因为swap在交换的时候并不是完全将2个容器的元素互换,而是交换了2个容器内的内存地址。除了数组,其他容器在交换后本质上是将内存地址进行了交换,而元素本身在内存中的位置是没有变化的。换而言之,如果说有2个房间,名字是a和b,那么swap函数交换的是2个房间的名字,而房间里的物品根本没有任何移动。那么外部指向物品的指针当然也没有任何变化,原来指向物品A的,swap交换后仍然指向物品A。而对于数组,

对vector使用swap函数
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
 
using namespace std;
 
int main() {
    int a[3] = { 1,2,3 };
    int b[3] = { 4,5,6 };
    vector<int> v1(a, a + 3);
    vector<int> v2(b, b + 3);
    cout << "v1中各个元素的地址:" << endl;
  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/1016509
推荐阅读
  

闽ICP备14008679号