zoukankan      html  css  js  c++  java
  • c/c++ 标准顺序容器 容器的访问,删除 操作

    c/c++ 标准顺序容器 容器的访问,删除 操作

    pop_front:vector,string不支持

    pop_back:forward_list不支持

    知识点

    1,front, back, at 成员函数的使用,对应代码里的test1

    2,删除最后一个元素pop_back, 删除第一个元素pop_front,对应代码里的test2

    3,删除指定位置的元素erase,并返回下一位置的迭代器 ,对应代码里的test3

    #include <vector>
    #include <string>
    #include <list>
    #include <forward_list>
    #include <deque>
    
    using namespace std;
    
    int main(){
      //test1 顺序容器的front, back(forward_list没有back),at成员函数                
      //front返回容器里的头元素;back返回容器里的最后一个元素                       
      /*                                                                            
      //在解引用一个迭代器或调用front,back之前要检查容器里是否有元素               
      deque<int> li{1,2,3,4};                                                       
      if(!li.empty()){                                                              
        auto val = *li.begin();                                                     
        val = 9;//不会改变容器里头元素的值                                          
        cout << li.front() << endl;                                                 
        auto val2 = li.front();                                                     
        val2 = 8;//不会改变容器里头元素的值                                         
        cout << li.front() << endl;                                                 
        auto& val3 = *li.begin();                                                   
        val3 = 9;//会改变容器里头元素的值                                           
        cout << li.front() << endl;                                                 
        auto& val4 = li.front();                                                    
        val4 = 8;//会改变容器里头元素的值                                           
        cout << li.front() << endl;                                                 
                                                                                    
        auto val5 = li.end();                                                        
        //得到容器的最后一个元素                                                    
        auto last = *(--val5);                                                      
        cout << last << endl;                                                       
                                                                                    
        auto v = li.at(1);                                                          
        auto v1 = li[2];                                                            
        cout << v << " " << v1 << endl;                                             
      }                                                                             
      */
    
      //test2 pop_back, pop_front                                                   
      //pop_back:删除容器的最后一个元素;pop_front:删除容器的第一个元素             
      /*                                                                            
      list<int> li{1,2,3,4};                                                        
      if(!li.empty()){                                                              
        li.pop_back();                                                              
        cout << li.back() << endl;                                                  
        li.pop_front();                                                             
        cout << li.front() << endl;                                                 
      }                                                                             
      */
    
      //test3 erase                                                                 
      //删除指定位置的元素,并放回指向删除元素的下一个元素的迭代器                  
      vector<int> li{0,1,2,3,4,5,6,7,8};
      //删除奇数                                                                    
      auto b = li.begin();
      while(b != li.end()){
        if(*b % 2){
          b = li.erase(b);
        }
        else{
          ++b;
        }
      }
      for(auto const &s : li){
        cout << s << " ";
      }
      cout << endl;
    
      auto it = li.begin();
      li.erase(it, it + 2);
      for(auto const &s : li){
        cout << s << " ";
      }
      cout << endl;
    
    }
    

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854

  • 相关阅读:
    Jenkin+TestNG进行自动化测试执行
    Jenkins配置
    一个简单的appium脚本
    白话以太网7层协议
    网络七层协议的形象说明
    RBAC权限管理
    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
    extjs Combobox动态加载数据问题,mode:local 还是remote
    高效率去掉js数组中重复项
    win7(32/64)+apache2.4+php5.5+mysql5.6 环境搭建配置
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9643807.html
Copyright © 2011-2022 走看看