#include "../inc/stl_.h"#include "../inc/class_.h"#include <iostream>#include <list>#include <deque>#include <vector>#include <string>#include <forward_list>#include <stack>#include <queue>using namespace std;void use_stl(){// 保存double数据的dequedeque<double> dd;// vector里存储了vector<string>vector<vector<string>> strvec_vec;//通过begin和end访问容器元素for (auto begin = dd.begin(); begin != dd.end(); begin++){cout << *begin << endl;}// vector<string>容器的迭代器vector<string>::iterator strit;// deque<double>容器的迭代器deque<double>::iterator ddit;//列表初始化list<string> persons = {"zack", "rolin", "vivo"};vector<char *> articles = {"c++", "althogram", "why"};//将一个容器copy给另一个相同类型的容器list<string> persons2(persons);//通过迭代器实现copylist<string> persons3(persons.begin(), persons.end());// assign实现数据copypersons2.assign(persons.begin(), persons.end());//用指定数目和初始值persons2.assign(5, "zack");//交换两个容器vector<string> svec1(10);vector<string> svec2(24);swap(svec1, svec2);// push_back添加尾元素vector<string> svec3;svec3.push_back("good idea!");// push_front添加头部元素list<int> nlist;for (int i = 0; i < 100; i++){nlist.push_front(i);}// insert 插入vector<string> strinvec;// vector不支持push_front,可以通过insert实现// 在vector头部插入元素会很慢,以为vector要移动所有元素strinvec.insert(strinvec.begin(), "zack");list<string> strlist;//相当于push_backstrlist.insert(strlist.end(), "zack");//批量插入strlist.insert(strlist.end(), 10, "ai");vector<string> names = {"zack", "rolin", "bob", "pior"};//通过迭代器插入strlist.insert(strlist.begin(), names.end() - 2, names.end());//通过参数列表插入strlist.insert(strlist.end(), {"vivo", "hua", "nokia"});// sales_data对象的listlist<Sales_data> sales_list;//传递Sales_data的构造函数sales_list.emplace_back(string("love easy"), 200, 1.8);auto first = sales_list.front();auto last = sales_list.back();auto strfirst = svec3.front();auto strfirst2 = svec3.at(0);auto strfrist3 = svec3[0];strinvec.push_back("hello");//删除尾部元素strinvec.pop_back();forward_list<string> forlist;forlist.push_front("hello");//删除头部元素forlist.pop_front();//删除头部元素strinvec.erase(strinvec.begin());//范围删除,删除从头部到尾部的元素strinvec.erase(strinvec.begin(), strinvec.end());//删除所有strinvec.clear();list<int> numlist = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};for (auto iter = numlist.begin(); iter != numlist.end();){if (*iter % 2){//删除后返回下一个迭代器iter = numlist.erase(iter);}else{//没删除则移动迭代器iter++;}}forward_list<int> numlist2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0};// numlist2的首前元素,第一个元素之前的位置,不能解引用,因为该位置没有元素。auto prev = numlist2.before_begin();//第一个元素auto curr = numlist2.begin();while (curr != numlist2.end()){if (*curr % 2){//返回删除元素的下一个元素curr = numlist2.erase_after(prev);}else{// prev更更新为currprev = curr;// curr向后移动curr++;}}vector<string> strvec2 = {"zack", "lucy", "vivo", "rolin"};cout << "strvec2.size is " << strvec2.size() << endl;cout << "strvec2.capacity is " << strvec2.capacity() << endl;//插入一个元素,导致size变化//当size>=capacity是,capacity也会增加strvec2.push_back("lirus");cout << "strvec2.size is " << strvec2.size() << endl;cout << "strvec2.capacity is " << strvec2.capacity() << endl;//修改大小strvec2.resize(20);//修改容量strvec2.reserve(23);for (auto it = strvec2.begin(); it != strvec2.end(); it++){cout << "data is " << *it << endl;}cout << "strvec2.size is " << strvec2.size() << endl;cout << "strvec2.capacity is " << strvec2.capacity() << endl;//基于vector构建stackstack<string, vector<string>> strstack;//基于vector构造priority_queuepriority_queue<string, vector<string>> strpque;//基于list构造一个queuequeue<list<string>> strqueue;//构造一个stack<int> intStack;for (int i = 0; i < 10; i++){intStack.push(i);}// stack不为空while (!intStack.empty()){//访问栈顶元素但是不取出auto data = intStack.top();cout << data << endl;//栈顶元素出栈intStack.pop();}//队列queue<int> numque;for (int i = 0; i < 10; i++){numque.push(i);}while (!numque.empty()){//访问队列首元素auto &first = numque.front();cout << first << " ";//弹出队首元素numque.pop();}cout << endl;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。