做网站花的钱和优化网站有关系吗可以做羞羞的游戏视频网站

当前位置: 首页 > news >正文

做网站花的钱和优化网站有关系吗,可以做羞羞的游戏视频网站,佛山网站设计,山西城乡建设部网站首页文章目录 vector构造常用函数遍历适用情形注意事项使用迭代器删除可能会出现的错误 Set MultiSet#xff08;不能用sort,会自动排序#xff09;构造常用函数删除#xff0c;查找遍历 unordered_set(不排序集合#xff09;#xff0c;unordered_multiset Map M… 文章目录 vector构造常用函数遍历适用情形注意事项使用迭代器删除可能会出现的错误 Set MultiSet不能用sort,会自动排序构造常用函数删除查找遍历 unordered_set(不排序集合unordered_multiset Map MultiMap区别 常见用法注意事项 stack成员函数注意事项 queue队列priority_queue优先队列 deque双端队列常用函数 vector 构造 vectorint a; vectorint a(100) ;//初始长为100 vectorint a(100,1);//长度为100赋初值为1 vectorvectorint a(100,vectorint()); vectorvectorint a(100,vectorint (100,-1); vectorint a[100] {{100,1}}//括号里有省略这是类似数组的构造 常用函数 v1.resize(10,5);//改变大小赋初值5,默认零v1[2]6;//先resize,才能用,/vector里有值/初始长度v1.push_back(7);//在后面添加v1.pop_back();//删除最后一位v1.front()//返回第一个if(v1v2) //比较if(!v1.empty())//不为空int nv1.size();//大小v1.insert(v1.begin()1,2);//插入v1.erase(v1.begin()1);//删除第二个v1.erase(v1.begin()2,v1.begin()5);//删除第3到5的三个元素v1.clear();//清空所有swap(v1,v2);//交换vectorsort(v1.begin(),v1.end());//sort排序v1.erase(unique(v1.begin(),v1.end()),v1.end());//对有序序列去重遍历 for(auto it:v1)//加强for遍历coutit;for(auto itv1.begin();itv1.end();it)//迭代器遍历cout*it;for(int i0;i3;i)//下标遍历coutv1[i];适用情形 1.一般情况下可以代替数组除非该题卡常 2.n x m矩阵比较大时数组浪费内存会MLE。用vector可以。另外它的数据存在堆空间不会爆栈。 注意事项 1.最好提前指定长度。不停push_back会慢 2.size()返回类型为size_t,一般[0,2^32) 3.能直接比较: , !, , , , 和 . 4.end()前一位 是尾值 5. rbegin(),rend(),是逆迭代器 使用迭代器删除可能会出现的错误 vectorint a{1,2,3,4}; for(auto ita.begin();it!end();it) if(*it2||*it3) a.erase(*it); //遍历结果是{134} //3不会删除vectorint a{1,2,3,4}; for(auto ita.begin();it!end();it) if(*it4) a.erase(it); //会出现re可以思考一下这两种错误 Set MultiSet不能用sort,会自动排序 多元集合(MultiSets)和集合(Sets)相像只不过支持重复对象,其用法与set基本相同。 set 其中所包含的元素的值是唯一的且是按一定顺序排列的因为其内部是通过链表的方式来组织所以在插入的时候比vector 快但在查找和末尾添加上比vector 慢 构造 setint s1; setint s2{1,2,3}; // 定义 s2初始值为 {1,2,3}setint s3(s2); // 使用 s2 初始化 s3setint s4(s2.begin(), s2.end()); // 使用迭代器初始化 s4setint,greaterint s5; //从大到小常用函数 删除查找 s5.erase(10);//删除所有元素10setint::iterator iter2 s5.begin(), iter1; // 迭代器删除iter1 iter2;iter2; //不能iter2s5.erase(iter1, iter2); // 删除 [iter1, iter2) 区间的元素auto ms5.find(4);//查找删除s5.erase(m); s2.clear();// 清空容器元素s.lower_bound(key); //返回指向第一个不小于给定键值key的元素的迭代器。s.upper_bound(key); //返回指向第一个大于给定键值key的元素的迭代器。auto ns5.lower_bound(15); //例子if(ns5.end()) cout**;遍历 用迭代器 for(set::iterator itst.begin();it!st.end();i) cout*itendl; 强化for for(auto it:st)//不确定 coutitendl; unordered_set(不排序集合unordered_multiset unordered_set是一个集合容器它存储唯一的元素并且元素是无序的。 与set相比unordered_set的插入、删除和查找操作都更快 。插入是插前面不能用lowerbound。不能用sort. Map MultiMap 区别 实现不同 ●unordered map底层是用哈希表实现的 ●map底层是用红黑树实现的 ●unordered_ map是不按键值排序的插入的时间是O(logn),查询时间是0(1) ●map是按键值排序的,插入的时间是O(logn),查询时间是O(logn) 使用范围不同 ●unordered_ map的使用比较局限它的key只能是int、double等基本类型以及string,而不能是自己定义的结构体 ●map可以支持所有类型的键值对
常见用法 //声明mapint,int m1;mapint,int,greaterint m2;//从大到小排unordered_mapint,int m3;//插入m2.insert({2,7});//和上边循环重合就没效果了//删除m2.erase(3);//删除键3auto itm2.begin();//删除从[it,m2.end)it;m2.erase(it,m2.end());m2.clear(); //清空//查找auto nm2.find(3);if(nm2.end())cout
**;//遍历要加first,secondif(!m2.empty())for(auto it:m2)coutit.first;//数量int mm2.count(4); coutm ;//sizeint km2.size();注意事项 不能用迭代器计算下标 访问遍历用迭代器操作别用 去重函数unique和string能不能用 stack stack是一种先进后出LIFO的数据结构只能从栈顶进行插入和删除操作不支持在其他位置访问或修改元素,sort排序。 成员函数 stackint a; a.push(元素; a.pop(); a.top(); a.size(); a.empty();注意事项 1.不可以下标索引 2.只读 3.不可用迭代器计算下标 queue队列 queue队列经常在图的广度优先搜索bfs和最短路算法spfa中应用。 queue中的常用函数 queueint q; // queuepairint,int I qq; //声明一个pair类型的队列容器 q.push(5); //将5插入队尾
q.pop(); //将队头元素删除
int x q.front(); //返回队头元素 int y q.back(); //返回队尾元素 priority_queue优先队列 priority_queueint q; //声明大顶堆 priority_queueint,vectorint,greaterint p; //声明一个二元组类型的队列q.push(111); //将元素插入队列中 O(log n) q.pop(); //删除队头元素 O(log n) int f q.top(); //返回队列中最大元素O(1) int kp.top(); //返回队列中最小元素O(1)priority_queue不支持删除堆中任意元素。 deque双端队列 双端队列deque是一个支持在两端高效插入或删除元素的连续线性储存空间。它像是vector和queue的结合。与vector相比deque在头部增删元素仅需要O(1)的时间与queue相比deque像数组一样支持随机访问。可以sort排序。 常用函数 dequeint q; //声明一个int型的deque容器 int y q.front(), z q.back(); //返回队头/尾元素 q.push_back(5); //从队尾入队 q.push_front(7); //从队头入队 q.pop_front(); //删除队头元素 q.pop_back(); //删除队尾元素 q.clear(); //清空容器 q.erase(q.begin()); //删除第一个