STL中swap的简单使用及总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ljfzhifuwa/article/details/53104513

STL中swap操作交换两个相同类型容器的内容,两个容器的元素将会将换。

需要注意的是相同的容器类型和相同的元素类型。

下边以具体实例说明:

1.相同的容器类型相同的元素类型



结果如图所示,str1和str2交换了元素。但是可以发现指向容器的迭代器并没有指向交换后的元素,而是依然指向原先的元素,这是因为swap并没有交换元素本身,而是只交换了两个容器的内部数据结构。所以迭代器并没有实效,对指针和引用一样。

2.相同的容器类型不同的元素类型


编译不通过,不能使用swap交换。


因为swap操作对string和array的调用与其他容器不同所以一下分析对array 和string 的swap调用。

3.对array调用swap



结果如上图所示,元素交换了。迭代器所指向的元素的值变化了,根据C++ primer所述,对array调用swap,swap会将arrar的元素一一交换是真正的交换元素,所需的时间跟元素的多少成正比。

4.对string调用swap



结果如图所示,迭代器所指的元素没有改变,故应该跟一般的容易一样,元素本身应该并未交换,但根据C++ primer 303页所述,应该是会导致迭代器失效。

希望有明白这个问题的大牛不吝赐教。

展开阅读全文

没有更多推荐了,返回首页