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
*赋值=:
无论赋值前容器大小是否相同, 赋值后两个容器的大小相等
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
相关文章推荐
- C++语法基础--顺序容器(三)--关系操作符,容器大小的操作,访问元素,删除元素,查找元素
- C++顺序容器类中对象初始化、赋值、swap
- C++语法基础--顺序容器(一)--vector,list,deque
- C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack
- C++语法基础--顺序容器(二)--容器常用操作,迭代器失效总结
- C++ 顺序容器的操作(7) 赋值与交换=、swap、 assign
- 【C++基础】 顺序容器
- C++基础的不能再基础的学习笔记——顺序容器(基本操作)
- 【语法回顾】C++STL:顺序容器
- C++语法基础--关联容器--multimap,multiset
- C++基础与技巧【顺序容器】 (三大顺序容器~vector, list, deque)
- 顺序容器:容器的赋值、swap、assign
- C++语法基础--泛型算法(generic algorithm)--对容器排序的算法sort(),stable_sort(),unique()
- C++ 顺序容器基础知识总结
- C++语法基础--关联容器--map(二)--查找并读取map中的元素count(),find()与 从map对象中删除元素erase()
- C++语法基础--关联容器--set
- C++顺序容器基础
- C++语法基础--复制控制--复制构造函数 ,赋值操作符 ,析构函数
- C++语法基础--派生类的构造函数,赋值操作符,析构函数,虚析构函数
- 顺序容器:容器的赋值、swap、assign