vector, list, map在遍歷時(shí)刪除符合條件的元素實(shí)現(xiàn)方法
更新時(shí)間:2016年12月25日 09:03:41 投稿:jingxian
下面小編就為大家?guī)硪黄獀ector, list, map在遍歷時(shí)刪除符合條件的元素實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
直接看源碼,內(nèi)有詳細(xì)解釋
/*
測試vector, list, map遍歷時(shí)刪除符合條件的元素
本代碼測試環(huán)境: ubuntu12 + win7_x64
*/
#include <iostream>
#include <vector>
#include <list>
#include <map>
#include <iterator>
using namespace std;
void Remove1(vector<int> &vec, int num)
{
for (vector<int>::iterator it = vec.begin(); it != vec.end();)
{
if (*it == num)
it = vec.erase(it);
else
it++;
}
}
void Remove2(list<int> &lst, int num)
{
list<int>::iterator it;
for (it=lst.begin(); it!=lst.end();)
{
if (*it == num)
{
lst.erase(it++);
}
else
it++;
}
}
void initMap(map<int, int>& m, int arr[], int arrLen)
{
for(int i = 0; i < arrLen; i++)
m[i] = arr[i];
}
void Remove_map(map<int, int>& m, int num)
{
map<int, int>::iterator it;
for(it = m.begin(); it != m.end();)
{
if (it->second == num)
m.erase(it++);
else
it++;
}
}
void displayMap(map<int, int>& m)
{
map<int, int>::iterator it = m.begin();
while(it != m.end())
{
cout << "key = " << it->first << ", value = " << it->second << endl;
it++;
}
cout << endl;
}
int main(void)
{
int arr[] = {1, 3, 5, 5, 5, 13, 7, 5, 7, 9};
int arrLen = sizeof(arr) / sizeof(arr[0]);
#if 1
// test vector
vector<int> vec(arr, arr+arrLen);
Remove1(vec, 5);
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
cout << endl << endl;
#endif
// test list
list<int> lst(arr, arr+arrLen);
Remove2(lst, 5);
copy(lst.begin(), lst.end(), ostream_iterator<int>(cout, " "));
cout << endl << endl;
// test map
map<int, int> m;
initMap(m, arr, arrLen);
Remove_map(m, 5);
displayMap(m);
return 0;
}
/*
Win7_x64運(yùn)行結(jié)果:
1 3 13 7 7 9
1 3 13 7 7 9
key = 0, value = 1
key = 1, value = 3
key = 5, value = 13
key = 6, value = 7
key = 8, value = 7
key = 9, value = 9
Ubuntu12運(yùn)行結(jié)果:
[zcm@cpp #54]$make
g++ -Wall -Os -DLINUX -o a a.cpp
[zcm@cpp #55]$./a
1 3 13 7 7 9
1 3 13 7 7 9
key = 0, value = 1
key = 1, value = 3
key = 5, value = 13
key = 6, value = 7
key = 8, value = 7
key = 9, value = 9
*/
以上就是小編為大家?guī)淼男【幱X得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
Qt使用SqlLite實(shí)現(xiàn)權(quán)限管理的示例代碼
本文主要介紹了Qt使用SqlLite實(shí)現(xiàn)權(quán)限管理的示例代碼,管理員針對不同人員進(jìn)行權(quán)限設(shè)定,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實(shí)現(xiàn)約瑟夫環(huán)
這篇文章主要介紹了C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實(shí)現(xiàn)約瑟夫環(huán)的相關(guān)資料,需要的朋友可以參考下2017-05-05
QT實(shí)現(xiàn)TCP客戶端自動(dòng)連接
這篇文章主要為大家詳細(xì)介紹了QT中一個(gè)TCP客戶端自動(dòng)連接的測試模型,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12
C++的sstream標(biāo)準(zhǔn)庫詳細(xì)介紹
以下是對C++中的的sstream標(biāo)準(zhǔn)庫進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下2013-09-09

