看到两个list赋值 用Swap 函数,没有直接用=, 看下面原来Swap 有时候更高效。
2017-05-02 10:45
344 查看
看到两个list赋值 用Swap 函数,没有直接用=, 看下面原来Swap 有时候更高效。
http://www.vckbase.com/module/articleContent.php?id=4726‘’
赋值和swapc1 = c2;// 将c1的内容替换为c2中元素的拷贝c1 = {a, b, c};// 赋值后, c1的大小为3array也可以整体赋值,这正是array与内置数组的不同之处; array在赋值时,赋值符号左右两边的对象必须具有相同的类型。1array a1 = {1, 2, 3, 4, 5}; array a2 = {6, 7, 8, 9, 10}; a1 = a2; // a1中元素将替换为a2中元素的拷贝 但不能将一个花括号列表赋值数组:1a2 = {0}; // error容器的赋值运算有如下几种:1c1
= c2;1c = {a, b, c};1swap(c1, c2); 将c1中元素替换为c2中的元素,c1和c2必须具有相同的类型1c1.swap(c2); swap通常比从c2向c1拷贝元素快的多。1 1// assign操作不适用于关联容器和array1seq.assign(b, e); 将seq中元素替换为迭代器b和e所指向的范围之内的元素,但是b和e不能指向seq1seq.assign(il); 将seq中元素替换为初始化列表il中的元素1seq.assign(n, val); 将seq中元素替换为n个值为val的元素赋值相关运算会导致指向左边容器内部的迭代器、引用和指针失效。而swap操作将容器内容交换不会导致失效。(array和string的情况除外)使用swapswap操作的是两个相同类型容器的内容。除array外,交换两个容器内部的操作保证会很快,元素本身并未交换,swap只是交换了两个容器内部的数据结构。元素不会被移动,这意味着,string除外,指向容器的迭代器、引用和指针在swap操作后不会失效。但在swap之后,这些元素已经属于不同的容器了。例如有两个容器vec1和vec2,假定iter1在swap前指向vec1[3],
在swap之后它指向vec2[3]。 但是,对一个string调用swap会导致迭代器、引用和指针失效。swap两个array会真正的交换他们的元素,所以交换array所需要的时间和array的元素数目成正比。新的标准库中,容器既提供成员函数版本的swap,也提供非成员函数版本的swap,我们应该习惯使用非成员版本的swap。
http://www.vckbase.com/module/articleContent.php?id=4726‘’
赋值和swapc1 = c2;// 将c1的内容替换为c2中元素的拷贝c1 = {a, b, c};// 赋值后, c1的大小为3array也可以整体赋值,这正是array与内置数组的不同之处; array在赋值时,赋值符号左右两边的对象必须具有相同的类型。1array a1 = {1, 2, 3, 4, 5}; array a2 = {6, 7, 8, 9, 10}; a1 = a2; // a1中元素将替换为a2中元素的拷贝 但不能将一个花括号列表赋值数组:1a2 = {0}; // error容器的赋值运算有如下几种:1c1
= c2;1c = {a, b, c};1swap(c1, c2); 将c1中元素替换为c2中的元素,c1和c2必须具有相同的类型1c1.swap(c2); swap通常比从c2向c1拷贝元素快的多。1 1// assign操作不适用于关联容器和array1seq.assign(b, e); 将seq中元素替换为迭代器b和e所指向的范围之内的元素,但是b和e不能指向seq1seq.assign(il); 将seq中元素替换为初始化列表il中的元素1seq.assign(n, val); 将seq中元素替换为n个值为val的元素赋值相关运算会导致指向左边容器内部的迭代器、引用和指针失效。而swap操作将容器内容交换不会导致失效。(array和string的情况除外)使用swapswap操作的是两个相同类型容器的内容。除array外,交换两个容器内部的操作保证会很快,元素本身并未交换,swap只是交换了两个容器内部的数据结构。元素不会被移动,这意味着,string除外,指向容器的迭代器、引用和指针在swap操作后不会失效。但在swap之后,这些元素已经属于不同的容器了。例如有两个容器vec1和vec2,假定iter1在swap前指向vec1[3],
在swap之后它指向vec2[3]。 但是,对一个string调用swap会导致迭代器、引用和指针失效。swap两个array会真正的交换他们的元素,所以交换array所需要的时间和array的元素数目成正比。新的标准库中,容器既提供成员函数版本的swap,也提供非成员函数版本的swap,我们应该习惯使用非成员版本的swap。
相关文章推荐
- c语言经典的排序函数swap():输入的两个整数按大小顺序输出。
- 两个结构体可以直接赋值吗? - 回复 "JohnsonAnother" 的问题
- 发现函数原来有两个原型
- Win7打印IAT表单直接蓝屏。XP下面没有问题
- 两个JSP页面之间如何传递一个对象?比如一个LIST或者HASHMAP?以及为什么有时候REQUEST.GETATTRIBUTE("NAME")取不到值?
- 在ASP.NET 2.0中,有时候需要对ASP.NET生成的HTML代码进行处理,或者是保存成静态文件。ASP.NET 提供了直接将请求保存成文件的方法:HttpRequest.SaveAs方法。下面这个方法就是在ASP.NET 2.0中得到ASP.NET
- 没有声明函数,直接调用导致的错误
- 有时候不希望别人看到你的网页的源代码怎么办?看下面的代码吧!
- 两个同样的数组a和b。无法直接赋值:a=b; 变通一法
- 定义下面两个类的成员函数为体验友元类
- [VB.NET]DATAGRIDVIEW如何赋值入下面的两个TEXTBOX
- C++中类型注册有的时候,函数找不到定义,可能是相应的头文件中防止重定义的声明,还是用原来的,没有做相应的更新
- 任意两个对象赋值,用Spring.Objects.ObjectWrapper效率比直接反射还慢?
- MFC实现打开、保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了
- strlen()和swap() 两个函数的实现(特定条件下)。
- 请教:A和B是两个tstringlist,如何除去B里面所有与A里面相同的项目?用下面的代码为什么会出错呢?
- vs2005下调试出现没有效果,但也不出错,点生成直接返回原来的状态。
- 原来可以在实例化类的时候直接给类中的属性赋值!!!!!!!
- 同一个ListItem加到两个CheckBox组中,一个赋值另外一个会随着变化
- java中交换两个基本数据类型的变量函数swap怎么写