C++语法基础--顺序容器(三)--关系操作符,容器大小的操作,访问元素,删除元素,查找元素

1.关系操作符
  *比较的容器必须具有相同的容器类型,而且其元素 类型也必须相同
  *所有容器的都通过比较其元素对来实现关系元素:
   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
}

     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值