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; }