zoukankan      html  css  js  c++  java
  • C++ vector 删除一个指定元素 和 find 一个指定元素以及遍历删除、 map遍历删除元素和删除find到的元素

    vector:

    1.delete element

    转载:http://www.cnblogs.com/xudong-bupt/p/3522457.html

     1 #include <vector>
     2 using namespace std;
     3 void main(void)
     4 {
     5 vector<int> array;
     6 array.push_back(1);
     7 array.push_back(2);
     8 array.push_back(3);
     9 array.push_back(4);
    10 array.push_back(5);
    11 
    12 vector<int>::iterator itr = array.begin();
    13 while (itr != array.end())
    14 {
    15     if (*itr == 3)
    16     {
    17       itr = array.erase(itr);//删除元素,返回值指向已删除元素的下一个位置
    18     }
    19     else
    20     {
    21       ++itr;
    22     }
    23   }
    24  }

    2.find element

     转载:http://blog.sina.com.cn/s/blog_7c18235d0100tnjt.html

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<vector>
     4 using namespace std;
     5 
     6 vector<int> array(100);//整型的array数组
     7 
     8 int main()
     9 {
    10     array[20]=50;
    11 
    12     vector<int>::iterator s=find(array.begin(),array.end(),50);//第一个参数是array的起始地址,第二个参数是array的结束地址,第三个参数是需要查找的值
    13 
    14     if( s !=array.end())//找到
    15     cout<<*s<<endl;
    16 
    17     else cout<<"not find!"<<endl;
    18     system("pause");
    19     return 0;
    20 }

    3.Traverse delete element

     1 #include <vector>
     2 #include <iostream>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7         vector<int> test_vec;
     8         for (int i = 0; i<100;i++)
     9         {
    10                 test_vec.push_back(i);
    11         }
    12         for(vector<int>::iterator it  = test_vec.begin(); it != test_vec.end(); )
    13          {
    14                  cout<<*(it)<<endl;
    15                  it = test_vec.erase(it);
    16         }
    17          return 0;
    18  } 

    转载:http://blog.csdn.net/windren06/article/details/8141921 

    转载:http://www.cnblogs.com/dabaopku/p/3912662.html

    转载:http://blog.csdn.net/dds_dev_group/article/details/6951441

    map:

    1.Traverse  delete element

    方法一

    #include<map>
    #include<string> int main() { map<string,int> m; m["a"]=1; m["b"]=2; m["c"]=3; map<string,int>::iterator it; for(it=m.begin();it!=m.end();) { map<string,int>::iterator it_back = it;//备份迭代器。因为删除操作后,迭代器指向空,要备份。 if(it_back != m.end()) { it++; m.erase(it_back); } } return 0; }

     it指针在元素被删除后失效了,所以在删除之前要备份当前it,it++之后移动一下个元素,然后再删除当前元素

    方法二:

     1 int main()
     2 {
     3     std::map<string,int>  m;
     4     m["a"]=1;
     5     m["b"]=2;
     6     m["c"]=3;
     7     map<string,int>::iterator it;
     8     for(it=m.begin();it!=m.end();)
     9     {
    10         if(it != m.end())
    11         {
    12             m.erase(it++);
    13         }
    14     }
    15     return 0;
    16 }

    在执行erase之前,it已经被加1了。erase会使得以前那个未被加一的it失效,而加了一之后的新的it是有效的。

    2. find delete element(找到指定的元素删除)

    #include<map>
    int main()
    {
        map<string,int>  m;
        m["a"]=1;
        m["b"]=2;
        m["c"]=3;
        map<string,int>::iterator iter;
    
        iter = m.find("a");
    
        if(iter!=m.end())//找到了
        {
            cout << iter->first << endl;
            m.erase(iter);
        }
        return   0;
    }

    点击下载Demo

  • 相关阅读:
    Redis 代理 twemproxy
    redis sentinel 集群监控 配置
    RabbitMQ 消息队列 配置
    codis 新版本 CodisLabs 编译安装
    CentOS7 开源跳板机(堡垒机) Jumpserver
    tomcat 优化配置 java-8 tomcat-7
    CentOS 7 安装配置 NFS
    CentOS 7 x64 安装 Ceph
    自动化运维 Ansible
    Java之数据类型讲解
  • 原文地址:https://www.cnblogs.com/chechen/p/4134639.html
Copyright © 2011-2022 走看看