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

长沙网红店登封seo推广

长沙网红店,登封seo推广,寻找做网站的,棋牌游戏软件开发STL的两种容器 1、序列式容器 按物理存储顺序线性排列,元素间无严格关联(交换位置不破坏结构),通过 “位置索引”(如下标、迭代器顺序)访问。 容器类型特点与典型场景 vector动态数组,随机访…

STL的两种容器

1、序列式容器

物理存储顺序线性排列,元素间无严格关联(交换位置不破坏结构),通过 “位置索引”(如下标、迭代器顺序)访问。

容器类型特点与典型场景 
vector动态数组,随机访问快,尾部增删高效 
list双向链表,任意位置增删高效(O (1)) 
deque双端队列,支持首尾高效增删、随机访问 
array静态数组,大小编译期确定,更接近原生数组 
forward_list单向链表,空间更紧凑,仅支持前向遍历

关联式容器

⾮线性结构, 两个位置有紧密的关联关系(交换位置破坏结构)。如:set、map、unordered_set、unordered_map等。

map和set底层是红⿊树,红⿊树是⼀颗平衡⼆叉搜索树。set是key搜索场景的结构, map是key/value搜索场景的结构。

键值对

键值对来表示具有对应的结构,在该结构中包含两个变量key和value,key表示键值,value表示与key的对应关系信息。

相当于在地下停车场,key是车牌,而value对应停车时间,车位信息。

set

set类的介绍

1.set的底层是平衡二叉树/二叉搜索树(红黑树),增删查效率是O(logN) ,迭代器遍历是⾛的搜索树的中序,是有序的,

2.当不传比较对象时set,默认按小于比较。

3.set中的元素不能被修改,因为set在底层是用二叉搜索树来实现的,若是对二叉搜索树当中某个结点的值进行了修改,那么这棵树将不再是二叉搜索树。

4.set存储唯一的value元素不可重复,multiset可以重复。

注:红黑树包含二叉搜索树。

 

成员函数功能描述
insert插入指定元素,保证元素唯一性,插入重复元素会被忽略
erase删除指定元素,可根据值或迭代器删除,删除成功返回受影响元素数量(一般为 1,删除迭代器指向元素时无返回值相关严格数量含义 )
find查找指定元素,找到则返回指向该元素的迭代器,未找到返回 end() 迭代器
size获取容器中元素的个数,返回 size_type 类型值(通常是无符号整数 )
empty判断容器是否为空,为空返回 true,否则返回 false
clear清空容器,删除所有元素,使容器大小变为 0
swap交换两个 set 容器中的数据,需保证两个容器类型匹配(相同模板参数 )
count获取容器中指定元素值的元素个数,因 set 元素唯一,返回值只能是 0 或 1

set定义

插入与遍历方式

#include<iostream>
using namespace std;
#include<set>
#include<string>
int main()
{//去重+升序排序set<int> s;//去重+降序排序//set<int, greater<int>> s;//插入一个值s.insert(5);s.insert(2);s.insert(1);//(正向)迭代器set<int>::iterator it = s.begin();//auto it=s.begin();while (it != s.end()){//*it=1;不能常量赋值cout << *it << " ";++it;}cout << endl;//(反向迭代器)set<int>::reverse_iterator rit = s.rbegin();while (rit!=s.rend()){cout << *rit << " ";rit++;}cout << endl;//插入一段值,相同则失败s.insert({ 2,4,5 });//范围for遍历for(auto e : s){cout << e << " ";}cout << endl;//遍历string比较ascll码的大小比较set<string> s2 = { "apple","banana","mango" };for (auto& e : s2){cout << e << " ";}return 0;
}

find和erase,set函数的使用

#include<iostream>
using namespace std;
#include<set>
#include<string>
int main()
{set<int> s = { 2,4,6,7,8,3 };//删除最小值s.erase(s.begin());for (auto e : s){cout << e << " ";}cout << endl;//查找删除int x;cin >> x;auto un = s.find(x);if (un != s.end()){s.erase(un);}else {cout << "没有" << endl;}for (auto e : s){cout << e << " ";}//算法库实现的查找O(n)auto pos1 = find(s.begin(), s.end(),x);// set⾃⾝实现的查找O(logN)auto pos2 = s.find(x);//利用count间接查找int v;cin >> v;if (s.count(v)){cout << v << "在" << endl;}else {cout << v << "不在" << endl;}// 查找个数cout << s.count(2) << endl;//容器大小cout << s.size() << endl;//容器判空cout << s.empty() << endl;//交换两个容器set<int> s1{ 11,22,33,44 };s.swap(s1);return 0;
}

 

查找并删除一段区间

int main()
{std::set<int> s;for (int i = 1; i < 10; i++)s.insert(i * 10);for (auto e : s){cout << e << " ";}cout << endl;//查找一段区间//[itlow,itup)包含[30,60]auto itlow = s.lower_bound(30);auto itup = s.upper_bound(60);//删除这区间s.erase(itlow, itup);for (auto e : s){cout << e << " ";}return 0;
}

multiset

multiset和set的使⽤基本完全类似,主要区别点在于multiset⽀持值冗余,那么 insert/find/count/erase都围绕着⽀持值冗余有所差异,具体参看下⾯的样例代码理解

#include<iostream>
#include<set>
using namespace std;
int main()
{// 相⽐set不同的是,multiset是排序,但是不去重multiset<int> s = { 4,2,7,2,4,8,4,5,4,9 };auto it = s.begin();while (it != s.end()){cout << *it << " ";++it;}cout << endl;// 相⽐set不同的是,x可能会存在多个,find查找中序的第⼀个int x;cin >> x;auto pos = s.find(x);while (pos != s.end() && *pos == x){cout << *pos << " ";++pos;}cout << endl;cout << s.count(x) << endl;// 相⽐set不同的是,count会返回x的实际个数// 相⽐set不同的是,erase给值时会删除所有的xs.erase(x);for (auto e : s){cout << e << " ";}cout << endl;return 0;
}

 

http://www.dtcms.com/wzjs/579185.html

相关文章:

  • 如何快速优化网站排名网站建设找哪里
  • 湖南网站制作外包天津做网站优化公司
  • 长沙网络建站平邑县建设局网站
  • 建设企业查询网站做网站的语言叫什么
  • 做五金的外贸网站有哪些wordpress 自媒体主题
  • 个人网站备案拍照域名备案和网站备案有什么区别
  • 冠县品牌网站建设推广网站建设收费标准资讯
  • 网站专题优化网络安全培训机构哪家好
  • 网站实名认证功能怎么做大型网站系统解决方案
  • 珠海企业网站制作费用邢台seo优化
  • 云南文山州全网搜索引擎优化
  • 网站建设使用什么软件企业网站开发说明
  • 自己做的网站怎么接数据库自适应营销网站
  • 如何做网站优化帮忙建设公司网站
  • 有那种网站么网站设计与开发公司
  • 建设工程知识类网站安徽网络优化公司
  • 网站没有内容 能做优化吗自己的品牌怎么推广加盟
  • 关于公司建设网站的意义字体
  • 浙江注册公司网站优秀网页设计代码
  • 小型企业类网站开发公司个人商城
  • 网站的交互设计包括哪些网站建设ftp上传是空目录
  • 怎样做企业手机网站首页app和微网站的区别是什么
  • 惠州百优做网站小程序熊掌号网站开发人才储备
  • 网站建设哪些资质龙岗网站建设企业
  • 做博客的网站seo推广培训费用
  • python 快速做网站济南网站建设优化熊掌号
  • 花都做网站公司基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)
  • 徐州企业建站系统平凉网站设计
  • wordpress站标成都网站建设木子网络
  • 网站建设工程师待遇小蝌蚪幸福宝入口导航