1.关系操作符
*比较的容器必须具有相同的容器类型,而且其元素 类型也必须相同
*所有容器的都通过比较其元素对来实现关系元素:
eg:
详见容器的比较第六第七条
2.容器大小的操作
![](https://img-blog.csdn.net/20130708093910468)
其中:max_size()
原型:
size_type max_size() const;
返回容器能够容纳元素的最大数量,由于系统或库实现限制,并不受resize(),reserve()等函数的影响
eg:
vector<int> vec;
cout<<vec.max_size()<<endl;//1073741823
vec.reserve(100);
cout<<vec.max_size()<<endl;//1073741823
vec.resize(200);
cout<<vec.max_size()<<endl;//1073741823
3.访问元素
其中,at(),功能和下标访问操作符,但at()执行边界检查,抛出的异常的类型为std::out_of_range,无效的访问.
原型:
reference at( size_type pos );
const_reference at( size_type pos ) const;
eg:
int arr[]={1,2,3,4,5};
vector<int> vec(arr,arr+5);
vector<int>::reference rf1=vec.front();//1
vector<int>::reference rf2=vec.back();//5
vector<int>::reference rf3=vec[5];//error
vector<int>::reference rf4=vec.at(5);//抛出异常
4.删除元素
![](https://img-blog.csdn.net/20130708094241484)
*删除第一个或最后一个元素:pop_front(),pop_back()
以list为例:
原型:
void pop_front();
void pop_back();
eg:
int arr[]={1,2,3,4,5};
list<int> lst(arr,arr+5);
lst.pop_back();
lst.pop_front();
for(list<int>::iterator it=lst.begin();it!=lst.end();it++)
{
cout<<*it<<'\t'; //2 3 4
}
*删除容器内的一个元素:erase()
以list为例:
原型:
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
解析:
返回值iterator为指向删除指定元素后容器中的第一个元素的位置,通常erase()会结合泛型算法find()一起使用,find在algorithmt头文件中定义
find()原型:
template <class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val)
解析:
返回值InputIterator指向[first,last)范围内第一个和val相等的位置,如果找不到元素则返回last的位置
eg:
int arr[]={1,2,3,4,5,6};
list<int> lst(arr,arr+6);
list<int>::iterator it=lst.begin();
list<int>::iterator it1=lst.erase(it);
cout<<*it1<<endl;//2,说明it1指向删除指定元素后容器中的第一个元素的位置
list<int>::iterator it2=find(lst.begin(),lst.end(),3);
cout<<*it2<<endl;//3,说明it2指向[lst.begin(),lst.end())范围内第一个和val相等的位置
list<int>::iterator it3=find(lst.begin(),lst.end(),5);
lst.erase(it2,it3); //结合find使用,可以实现删除容器内任一段内容
for(it=lst.begin();it!=lst.end();it++)
{
cout<<*it<<'\t';//2 5 6
}
*比较的容器必须具有相同的容器类型,而且其元素 类型也必须相同
*所有容器的都通过比较其元素对来实现关系元素:
eg:
详见容器的比较第六第七条
2.容器大小的操作
其中:max_size()
原型:
size_type max_size() const;
返回容器能够容纳元素的最大数量,由于系统或库实现限制,并不受resize(),reserve()等函数的影响
eg:
vector<int> vec;
cout<<vec.max_size()<<endl;//1073741823
vec.reserve(100);
cout<<vec.max_size()<<endl;//1073741823
vec.resize(200);
cout<<vec.max_size()<<endl;//1073741823
3.访问元素
其中,at(),功能和下标访问操作符,但at()执行边界检查,抛出的异常的类型为std::out_of_range,无效的访问.
原型:
reference at( size_type pos );
const_reference at( size_type pos ) const;
eg:
int arr[]={1,2,3,4,5};
vector<int> vec(arr,arr+5);
vector<int>::reference rf1=vec.front();//1
vector<int>::reference rf2=vec.back();//5
vector<int>::reference rf3=vec[5];//error
vector<int>::reference rf4=vec.at(5);//抛出异常
4.删除元素
*删除第一个或最后一个元素:pop_front(),pop_back()
以list为例:
原型:
void pop_front();
void pop_back();
eg:
int arr[]={1,2,3,4,5};
list<int> lst(arr,arr+5);
lst.pop_back();
lst.pop_front();
for(list<int>::iterator it=lst.begin();it!=lst.end();it++)
{
cout<<*it<<'\t'; //2 3 4
}
*删除容器内的一个元素:erase()
以list为例:
原型:
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
解析:
返回值iterator为指向删除指定元素后容器中的第一个元素的位置,通常erase()会结合泛型算法find()一起使用,find在algorithmt头文件中定义
find()原型:
template <class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val)
解析:
返回值InputIterator指向[first,last)范围内第一个和val相等的位置,如果找不到元素则返回last的位置
eg:
int arr[]={1,2,3,4,5,6};
list<int> lst(arr,arr+6);
list<int>::iterator it=lst.begin();
list<int>::iterator it1=lst.erase(it);
cout<<*it1<<endl;//2,说明it1指向删除指定元素后容器中的第一个元素的位置
list<int>::iterator it2=find(lst.begin(),lst.end(),3);
cout<<*it2<<endl;//3,说明it2指向[lst.begin(),lst.end())范围内第一个和val相等的位置
list<int>::iterator it3=find(lst.begin(),lst.end(),5);
lst.erase(it2,it3); //结合find使用,可以实现删除容器内任一段内容
for(it=lst.begin();it!=lst.end();it++)
{
cout<<*it<<'\t';//2 5 6
}