赞
踩
写在前面
这篇文章主要讨论了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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。