vector, list, map在遍历时删除符合条件的元素实现方法

时间:2021-05-19

直接看源码,内有详细解释

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

以上就是小编为大家带来的小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧全部内容了,希望大家多多支持~

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章