//根据下标进行遍历 for (int i = 0; i < v.size(); i++) cout << v[i] << ' '; //使用迭代器遍历 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) cout << *it << ' '; //for_each遍历(C++11) for (auto x : v) cout << x << ' ';
②stack:又称栈,是一种后进先出(Last In First Out,LIFO)的数据结构,定义在<stack>头文件中,stack容器允许新增元素、移除元素、取得栈顶元素,但是除了最顶端以外,没有任何方法可以存取stack的其它元素,换言之,stack不允许有遍历行为。
//string中erase()与remove()的用法 string str1, str2, str3, str4, str5; str1 = str2 = str3 = str4 = str5 = "I love AcWing! It's very funny!"; str1.erase(15);//删除[15,end())的所有元素,"I love AcWing!" str2.erase(6, 11);//从第6个元素(包括)开始往后删除11个元素,"I love's very funny!" str3.erase(str3.begin() + 2);//删除迭代器所指的元素,"I ove AcWing! It's very funny!" str4.erase(str4.begin() + 7, str4.end() - 11);//删除[str4.begin()+7,str4.end()-11)的所有元素,"I love very funny!" str5.erase(remove(str5.begin(), str5.end(), 'n'), str5.end());//删除[str5.begin(),str5.end())中所有字符'n',"I love AcWig! It's very fuy!"
④queue:又称队列,是一种先进先出(First In First Out,FIFO)的数据结构,定义在<queue>头文件中,queue容器允许从一端(称为队尾)新增元素(入队),从另一端(称为队头)移除元素(出队)。 ⑤priority_queue:又称优先队列,同样定义在<queue>头文件中,与queue不同的地方在于我们可以自定义其中数据的优先级,优先级高的排在队列前面,优先出队。priority_queue具有queue的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它的本质是用堆实现的,因此可分为小根堆与大根堆,小根堆中较小的元素排在前面,大根堆中较大的元素排在前面。注意:创建priority_queue时默认是大根堆!
//根据下标进行遍历 for (int i = 0; i < deq.size(); i++) cout << deq[i] << ' '; //使用迭代器遍历 for (deque<int>::iterator it = deq.begin(); it != deq.end(); it++) cout << *it << ' '; //for_each遍历(C++11) for (auto x : deq) cout << x << ' ';
//使用迭代器遍历 for (unordered_set<int>::iterator it = st.begin(); it != st.end(); it++) cout << (*it) << ' '; //for_each遍历(C++11) for (auto x : st) cout << x << ' ';
//使用迭代器遍历 for (unordered_map<int, int>::iterator it = mp.begin(); it != mp.end(); it++) cout << (*it).first << ' ' << (*it).second << endl; //for_each遍历(C++11) for (auto x : mp) cout << x.first << ' ' << x.second << endl; //扩展推断范围的for_each遍历(C++17) for (auto &[k, v] : mp) cout << k << ' ' << v << endl;