您的位置:首页 > 编程语言 > C语言/C++

C++语法基础--顺序容器(四)--赋值和swap

2013-07-08 10:32 656 查看
赋值和swap








*赋值=:

无论赋值前容器大小是否相同, 赋值后两个容器的大小相等

eg:

list<int> lst1;

list<int> lst2(5);

lst1=lst2;

cout<<lst1.size()<<endl;//5

cout<<lst2.size()<<endl;//5



*赋值assign:

原型:

range :

template< class InputIt >

void assign( InputIt first, InputIt last );

fill :

void assign( size_type count, const T& value );

解析:

count :容器新的大小

value :初始化容器的元素的值

first, last : 被复制容器的取值范围

eg:

int arr[]={1,2,3,4,5};

vector<int> vec1;

vector<int> vec2(arr,arr+5);

vec1.assign(vec2.begin(),vec2.begin()+3);

vec2.assign(3,1);

for(vector<int>::iterator it=vec1.begin();it!=vec1.end();it++)

{

cout<<*it<<'\t'; //1 2 3


}

[b] cout<<endl;

for(vector<int>::iterator it=vec2.begin();it!=vec2.end();it++)

{

cout<<*it<<'\t';//1 1 1

}

*=和assign的区别:

assing可以在不同类型的容器(元素类型可以不同但相互兼容)之间赋值

eg:

char* str[]={"hello","how","are","you"};

vector<char*> vec(str,str+4);

list<string> lst;

lst.assign(vec.begin(),vec.end());

for(list<string>::iterator it=lst.begin();it!=lst.end();it++)

{

cout<<*it<<'\t';
//hello how are you

}


[/b]



*swap

以vector为例:

原型:

void swap (vector& x);

解析:

完成swap操作后,原来的迭代器并不会失效

eg:

int arr[]={1,2,3,4,5};

vector<int> vec1;

vector<int> vec2(arr,arr+5);

vector<int>::iterator it=vec2.begin();

cout<<*it<<endl;//交换前1

vec1.swap(vec2);

cout<<*it<<endl;//交换后还是1

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: