STL assign 和swap
首先看下在整个container上面的复制.
c1=c2
可以等同于
c1.erase(c1.begin(),c1.end()) //delete all elems in c1
c1.insert(c1.begin(),c2.begin(),c2.end);
在赋值后,c1和c2完全相等,即使他们曾经的size不相等,赋值后也相等了。
=和assign操作会是左边的容器的迭代器失效。然而,swap不会使迭代器失效。after swap,iteratros continue to refer to the
same elements,although those elements are now in a different container.
=赋值操作符可以使用仅当elememtn type元素类型相同时,如果我们want to assign elements of a differenct but compatible element type and/or from a different container type,,我们必须使用assign函数。例如:我们可以使用assign 函数 to
assign a range of char* values from a vector into list of string.
vector<int> v1(,);
vector<int> v2(,);
v1=v2; ;//v1也v2完全相等
assign原型:
| range (1) |
template <class InputIterator> |
|---|---|
| fill (2) |
void assign (size_type n, const value_type& val); |
vector<int> v1(,);
v1.assign(,);//v1变成了10个5
vector<int> v1(,);
vector<int> v2(,);
v1.assign(v2.begin(),v2.begin()+1);把v2的首元素赋值给v1,v2就只有一个元素了。
可以看到,assign后原来的元素都不存在了。assign操作首先会删除所有的元素,然后插入赋值的元素。
swap函数交换2个操作数的值。the type of contianer must match:
the operands must be the same kind of container.,and they must hold values of the same type.
after the call to swap,the elements that had been in the right-hand operand are in the left。
vector<int> v3(,);
vector<int> v4(,);
v3.swap(v4); //v3变成了v4,v4变成了v3
STL assign 和swap的更多相关文章
- STL——容器(deque) deque 的赋值 assign() operator=() swap()
deque 的赋值分下边4种方法: deque.assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身.注意该区间是左闭右开的区间. 1 #include <io ...
- <泛> STL - vector 模拟实现
今天为大家带来一个模拟STL-vector的模板实现代码. 首先看一下测试结果,之后再为大家呈现设计 测试效果 测试代码 #include<iostream> #include<ve ...
- 不要重复发明轮子-C++STL
闫常友 著. 中国铁道出版社. 2013/5 标准的C++模板库,是算法和其他一些标准组件的集合. . 1.类模板简介 2.c++中的字符串 3.容器 4.c++中的算法 5.迭代器 6.STL 数值 ...
- vector 释放内存 swap
相 信大家看到swap这个词都一定不会感到陌生,甚至会有这样想法:这不就是简单的元素交换嘛.的确,swap交换函数是仅次于Hello word这样老得不能老的词,然而,泛型算法东风,这个小小的玩意儿却 ...
- Effective C++ Item 25 考虑写出一个不抛异常的swap函数
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛 ...
- [CPP] STL 简介
STL 即标准模板库(Standard Template Library),是 C++ 标准库的一部分,里面包含了一些模板化的通用的数据结构和算法.STL 基于模版的实现,因此能够支持自定义的数据结构 ...
- STL-容器库101--array【C11】
1. 原型 C11提供 template < class T, size_t N > class array; T: 元素类型,以 array::value_type 作为别名使用:N: ...
- 《Effective C++》第4章 设计与声明(2)-读书笔记
章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...
- C/C++-左值、右值及引用
目录 1.左值and右值 2.引用 3.左值引用的用途 4.std::move和std::swap C和C++中定义了引用类型(reference type),存在左值引用(lvalue refere ...
随机推荐
- 《Linux内核设计与实现》内存管理札记
1.页 芯作为物理页存储器管理的基本单元,MMU(内存管理单元)中的页表,从虚拟内存的角度来看,页就是最小单位. 内核用struct page结构来标识系统中的每个物理页.它的定义例如以下: flag ...
- ANDROID对文件的操作
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...
- cocos2d-x教程1 hello world
HelloworldScene.h #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos ...
- Java 日期字符串与日期类型转换
1.SimpleDateFormat.format 把日期类型转化到指定格式字符串 public static String convToString(Calendar cld,String temp ...
- HTML5 实现图像模糊算法
做个广告,WEB/PHP/JQ/HTML5/MYSQL/QQ群6848027 项目中需要用到HTML5模糊图像,以前用GDI,GDI+中都有现成的组件来实现,HTML5中如何实现? createIma ...
- 关于 free() 函数用法的若干疑问
<C语言参考手册>中关于 free() 函数有如下描述. (1)free() 函数的原型 void free(void *ptr); (2)free 函数对以前由 malloc.callo ...
- 用JS画斐波那契螺旋线(黄金螺旋线)
偶然看到斐波那契螺旋线(黄金螺旋线)的定义及画图方法,试着用JS画了一下,很漂亮,很好玩 具体定义及画法大家查一下就有了,很简单. 以下是代码: <!DOCTYPE html> <h ...
- python defaultdict 类型
在Python里面有一个模块collections,解释是数据类型容器模块.这里面有一个collections.defaultdict()经常被用到.主要说说这个东西. 综述: 这里的defaultd ...
- addChildViewController ipad 中Controller的嵌套和叠加
1.addChildViewController 在 base controller中添加子的controller,会自动调用子的controller中viewDidload,viewWillAppe ...
- jQuery 自学笔记—3
jQuery 语法实例 $(this).hide() 演示 jQuery hide() 函数,隐藏当前的 HTML 元素. $("#test").hide() 演示 jQuery ...