时间: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邮箱联系删除。
遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题。下面主要看看以下几种遍历删除List中元素的形式:1.通过增强的for循环删除符合条件的多个
遍历删除List或Map中的元素有很多种方法,当运用不当的时候就会产生问题。下面通过这篇文章来再学习学习吧。一、List遍历过程中删除元素使用索引下标遍历的方式
c++容器list、vector、map、set区别list封装链表,以链表形式实现,不支持[]运算符。对随机访问的速度很慢(需要遍历整个链表),插入数据很快(
总结本人在工作中经验教训。在使用list、set或map遍历删除某些元素时可以这样使用:正确使用方法1复制代码代码如下:std::list<int>List;s
在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下:num_list=[1,2,3,4,5]print(num_list)foriinrange