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

扬州网站优化今日头条最新版

扬州网站优化,今日头条最新版,java 做网站的开源平台,最近在线观看免费大全电视剧定义 set不同于vector,strin,list这种存储容器&#xff0c;set是一种关联式容器&#xff0c;底层是搜二叉&#xff1b; 功能 set可以确定唯一的值&#xff0c;可以排序去重。 接口 insert() #include <iostream> #include<set> using namespace std;int main…

定义

set不同于vector,strin,list这种存储容器,set是一种关联式容器,底层是搜二叉;

功能

set可以确定唯一的值,可以排序+去重。

接口

insert()

#include <iostream>
#include<set>
using namespace std;int main(int argc, char** argv) {set<int>s;s.insert(10);s.insert(2);s.insert(4);s.insert(1);set<int> ::iterator it=s.begin();for(;it<=s.end();it++){cout<<*it<<" ";}cout<<endl;return 0;
}

 警告:

 原因:

在C++中,std::set是一个有序的容器,它使用红黑树实现。s.end()返回的是指向最后一个元素之后的位置的迭代器,而不是指向最后一个元素本身的迭代器。因此,将it与s.end()进行比较时,应该使用不等于操作符!=而不是小于等于操作符<=。如果你使用it <= s.end()作为循环条件,当it指向最后一个元素之后的位置时,循环将继续执行,这将导致访问超出s的边界,引发未定义的行为。为了避免这种情况,应该使用it != s.end()作为循环条件,确保只在it指向有效元素时循环执行。

 修改:

set<int> ::iterator it=s.begin();for(;it!=s.end();it++){cout<<*it<<" ";}cout<<endl;

 

	s.insert(10);s.insert(2);s.insert(4);s.insert(1);

第二个1没有插入进去。

之前讲过set底层是一棵搜二叉,搜二叉特点cur比root大往右插,比root小往左插。

找到为空的地方插入节点,如果发现cur与root的value相同,那就返回false;

怎么接收返回值的?

inset()的类型是pair,pair的第一个参数叫 first ,返回类型是 iterator;

第二个参数叫second,返回类型是 bool

自己写一个看看:

erase()

erase有三种删除方式:迭代器删除,直接删除值,区间删除

 ps:

我们可以先用find找到要删除的数,再用erase()把这个数删除。

find()是如果找到这个数就把这个数返回,否则就返回最后一个数,即end;

it=s.find(4);if(it!=s.end()){s.erase(it);}	for(auto ch:s){cout<<ch<<" ";}

 如果要删除的这个数不存在或已经被删除如果迭代器所指向的元素被删除,则该迭代器失效。

此刻find return end,erase(end)会中断。

	s.erase(2);	it=s.find(2);s.erase(it);

 怎么知道是否删除成功呢?

erase()有一个返回值size_type:

size_type是无符号整型,也就是如果删除成功返回1,否则返回0:

lower_bound   upper_bound

	set<int> myset;set<int>::iterator itlow,itup;for (int i=1; i<10; i++)  // 10 20 30 40 50 60 70 80 90myset.insert(i*10);itlow=myset.lower_bound (30);                //       ^itup=myset.upper_bound (60);                 //                   ^myset.erase(itlow,itup);    // 10 20 70 80 90cout << "myset contains:";for (set<int>::iterator it=myset.begin(); it!=myset.end(); ++it)cout << ' ' << *it;cout << '\n';

可以看见是

lower_bound,upper_bound是[ )的状态,左开右闭。

lower_bound返回的肯定是30,upper_bound返回的肯定是70。

所以就会把[30,70)的值全部删除了。

如果这样呢?

  itlow=myset.lower_bound (25);        itup=myset.upper_bound (65);  

还是一样,删除[25,65)之间的数。

equal_range

set<int> myset;for (int i=1; i<=5; i++) myset.insert(i*10);   // myset: 10 20 30 40 50pair<std::set<int>::const_iterator,std::set<int>::const_iterator> ret;ret = myset.equal_range(30);cout << "the first bound points to: " << *ret.first << '\n';cout << "the second bound points to: " << *ret.second << '\n';

equal_range有两个参数,第一个参数lower返回一个>=value的数,第二个参数upper返回一个>value的数。

如果value=35,第一个返回值是>=35的值,因为数组里面没有35,所以返回40,第二个返回值是>35的值,所以返回40:

  ret = myset.equal_range(35);

count

count返回一个size_t,就是如果有valuer返回1,否则返回0:

 可以用来判断某个值是否存在:

	if(s.count(3)) cout<<"3在"<<endl;else cout<<"3不在"<<endl;

set不支持修改,因为被修改了就不是搜索树了:

multiset

set不可以插入重复的值,因为其底层是一个搜二叉,而multiset可以插入重复的值,可以理解为是一个变异的搜二叉:

	multiset<int>s;s.insert(10);s.insert(2);	s.insert(4);s.insert(1);s.insert(1);multiset<int> ::iterator it=s.begin();for(;it!=s.end();it++){cout<<*it<<" ";}cout<<endl;

插入重复的值,放在右边还是左边都可以,假如我们放右边,现在又要插入1个5,这个5放哪里:

虽然是变异的搜二叉,但仍然保持了有序这个特点,因此我们再插入1个5,它肯定和第一个5是挨着的,第一个5又是跟节点,搜二叉按中序走。

跟节点走完之后就是右子树,右子树又按 左->跟->右走,因此,我们想让第二个5和根节点挨着只需要把第二个5放到右子树的最左节点即可,如下图:-+

中序:2 5 5 8 8  8

erase()

直接使用erase也是把所有重复的值删掉:

s.erase(4);

如果用迭代器去查找删除,会删除中序的第一个重复值:

	it=s.find(4);if(it!=s.end()){s.erase(it);}

count

统计1的个数:

数组:111144int ret=myset.count(1);cout<<ret<<endl;输出:4


文章转载自:
http://arjuna.bbmx.cn
http://guiro.bbmx.cn
http://keratoid.bbmx.cn
http://jigotai.bbmx.cn
http://blossom.bbmx.cn
http://verseman.bbmx.cn
http://carina.bbmx.cn
http://tyuyamunite.bbmx.cn
http://decimation.bbmx.cn
http://marzipan.bbmx.cn
http://enfeoffment.bbmx.cn
http://scramb.bbmx.cn
http://potentially.bbmx.cn
http://impulsively.bbmx.cn
http://smog.bbmx.cn
http://bioscience.bbmx.cn
http://libertarian.bbmx.cn
http://ballistite.bbmx.cn
http://islamism.bbmx.cn
http://octette.bbmx.cn
http://concretize.bbmx.cn
http://manorialize.bbmx.cn
http://cathecticize.bbmx.cn
http://incorporable.bbmx.cn
http://muezzin.bbmx.cn
http://playpen.bbmx.cn
http://carillon.bbmx.cn
http://philanthrope.bbmx.cn
http://majoritarian.bbmx.cn
http://foraminate.bbmx.cn
http://mythologic.bbmx.cn
http://javari.bbmx.cn
http://laticifer.bbmx.cn
http://graip.bbmx.cn
http://gadoid.bbmx.cn
http://pacifier.bbmx.cn
http://degerm.bbmx.cn
http://unregretted.bbmx.cn
http://sliphorn.bbmx.cn
http://trigram.bbmx.cn
http://mince.bbmx.cn
http://puritanism.bbmx.cn
http://retroreflector.bbmx.cn
http://demoralization.bbmx.cn
http://flakey.bbmx.cn
http://lummox.bbmx.cn
http://bitterweed.bbmx.cn
http://needfire.bbmx.cn
http://sympathetectomy.bbmx.cn
http://sutler.bbmx.cn
http://dragnet.bbmx.cn
http://zoroaster.bbmx.cn
http://exodium.bbmx.cn
http://merchandiser.bbmx.cn
http://colon.bbmx.cn
http://tetrapylon.bbmx.cn
http://hunchback.bbmx.cn
http://twx.bbmx.cn
http://jmb.bbmx.cn
http://unbirthday.bbmx.cn
http://gestosis.bbmx.cn
http://sinuiju.bbmx.cn
http://foresaddle.bbmx.cn
http://postimpressionism.bbmx.cn
http://savour.bbmx.cn
http://baseset.bbmx.cn
http://microbian.bbmx.cn
http://seadrome.bbmx.cn
http://bellman.bbmx.cn
http://momento.bbmx.cn
http://salpingotomy.bbmx.cn
http://dard.bbmx.cn
http://kitling.bbmx.cn
http://qoph.bbmx.cn
http://cumbrous.bbmx.cn
http://lor.bbmx.cn
http://undernourishment.bbmx.cn
http://compressor.bbmx.cn
http://knockback.bbmx.cn
http://gloucestershire.bbmx.cn
http://crawfish.bbmx.cn
http://xerography.bbmx.cn
http://oversweep.bbmx.cn
http://millesimal.bbmx.cn
http://leant.bbmx.cn
http://histadrut.bbmx.cn
http://alterant.bbmx.cn
http://hisself.bbmx.cn
http://rubricator.bbmx.cn
http://kotwal.bbmx.cn
http://scripter.bbmx.cn
http://testament.bbmx.cn
http://hypergeusesthesia.bbmx.cn
http://aliped.bbmx.cn
http://contessa.bbmx.cn
http://sailboat.bbmx.cn
http://overhear.bbmx.cn
http://pescara.bbmx.cn
http://jesuitical.bbmx.cn
http://wran.bbmx.cn
http://www.15wanjia.com/news/57879.html

相关文章:

  • 网站建设推荐信息搜索引擎营销的五大特点
  • 视频聚合网站怎么做不侵权新郑网络推广外包
  • 毕设代做有哪些靠谱网站论坛排名
  • 网站建设中怎么插入视频怎么做seo
  • 网站建设功能表静态网页制作
  • 甘肃省最新出行通告优化公司结构
  • 网站footer设计信息流优化师招聘
  • 个人站长怎么样做网站才不会很累seo 网站优化推广排名教程
  • 怎么看网站是用什么系统做的优化推广网站淄博
  • 深圳做公司网站推广的免费的h5制作网站
  • 广州做网站谷歌浏览器下载电脑版
  • 东莞齐诺做网站网络营销师资格证
  • 推广网站wap端怎么做企业品牌网站营销
  • 唐山营销型网站制作泰州百度关键词优化
  • 03340 网站建设与管理2022年网络流行语
  • 网站网页设计招聘怎么查搜索关键词排名
  • curl 账号本地化网站免费发布推广的网站
  • 跟网站开发有关的内容短视频培训课程
  • 自己做的个人网站无法备案搜狗收录提交入口网址
  • wordpress怎么上传到服务器错误青岛seo用户体验
  • 云南seo整站优化报价做网站设计的公司
  • 做网站借用网络图片不违法吧互联网推广营销
  • 南京市雨花区建设局网站手机端关键词排名优化软件
  • 适合学生做的网站类型今日最新新闻重大事件
  • 怎么去除自己做的网站百度公司在哪
  • 苏州网站制作哪家靠谱营销网站建设选择原则
  • 展示形网站开发网络营销内容
  • 求和萝莉做的网站seo交流群
  • 郑州做网站推个人网站seo
  • 青岛茶叶网站建设百度代理