日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里Set

發布時間:2025/4/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里Set 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上次面阿里巴巴。面試官問了我這樣一個問題,“C++ STL中的set是如何實現的”。當時只答了二叉樹,回來查下書,原來一般是紅黑樹,后悔沒好好記住啊。。。

接著,面試官又考了我一道這樣的編程題:定義一個Student結構體,包括name和age等數據,要求編程實習在set中查找一個name == "張三",?age == 13的操作。

本來set自己用得不多,當時一下懵了。回來查閱《C++標準程序庫》這本書,自己試著實現了下。

  • #include?<iostream>??
  • #include?<set>??
  • using?namespace?std;??
  • ??
  • /*Student結構體*/??
  • struct?Student?{??
  • ????string?name;??
  • ????int?age;??
  • ????string?sex;??
  • };??
  • ??
  • /*“仿函數"。為Student?set指定排序準則*/??
  • class?studentSortCriterion?{??
  • ????public:??
  • ????????bool?operator()?(const?Student?&a,?const?Student?&b)?const?{??
  • ????????????/*先比較名字;若名字相同,則比較年齡。小的返回true*/??
  • ????????????if(a.name?<?b.name)??
  • ????????????????return?true;??
  • ????????????else?if(a.name?==?b.name)?{??
  • ????????????????if(a.age?<?b.age)??
  • ????????????????????return?true;??
  • ????????????????else??
  • ????????????????????return?false;??
  • ????????????}?else??
  • ????????????????return?false;??
  • ????????}??
  • };??
  • ??
  • int?main()??
  • {??
  • ????set<Student,?studentSortCriterion>?stuSet;??
  • ??
  • ????Student?stu1,?stu2;??
  • ????stu1.name?=?"張三";??
  • ????stu1.age?=?13;??
  • ????stu1.sex?=?"male";??
  • ??
  • ????stu2.name?=?"李四";??
  • ????stu2.age?=?23;??
  • ????stu2.sex?=?"female";??
  • ??
  • ????stuSet.insert(stu1);??
  • ????stuSet.insert(stu2);??
  • ??
  • ????/*構造一個測試的Student,可以看到,即使stuTemp與stu1實際上并不是同一個對象,?
  • ?????*但當在set中查找時,仍會查找成功。這是因為已定義的studentSortCriterion的緣故。?
  • ?????*/??
  • ????Student?stuTemp;??
  • ????stuTemp.name?=?"張三";??
  • ????stuTemp.age?=?13;??
  • ??
  • ????set<Student,?studentSortCriterion>::iterator?iter;??
  • ????iter?=?stuSet.find(stuTemp);??
  • ????if(iter?!=?stuSet.end())?{??
  • ????????cout?<<?(*iter).name?<<?endl;??
  • ????}?else?{??
  • ????????cout?<<?"Cannot?fine?the?student!"?<<?endl;??
  • ????}??
  • ??
  • ????return?0;??
  • }??
  • 總結

    以上是生活随笔為你收集整理的阿里Set的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。