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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

set 结构体

發布時間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 set 结构体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++的設計哲學之一就是使得程序在對待自定義類型時和內置類型必須是一致的(甚至自定義類型的支持更好)。所以,肯定是你程序的問題,如下:
《C++標準程序庫》中明確指出:“只要是 assignable、copyable、comparable (根據某個排序準則)的型別T,都可以成為set或multiset的元素型別。”。其中,所謂的comparable指的是less,即可進行<比較。

反之,則不被支持,所以,問題是,你的A是否支持上述三種語義?

看下面的測試代碼:
C/C++ code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 void?test(){ set<A>s; A?a,b,c; a.str="shanying";a.score=100; b.str="shanying";b.score=0; c.str="baitoudiao";c.score=50; A?cpy(a); cout<<"orign:"<<a.str<<','<<a.score<<endl; cout<<"copy:"<<cpy.str<<','<<cpy.score<<endl; A?assigned; assigned?=?a; cout<<"assigned:"<<assigned.str<<','<<assigned.score<<endl; //?cout<<"a<b?"<<(a<b?"true":"false")<<endl;???????無法通過編譯 }


輸出:
orign:shanying,100
copy:shanying,100
assigned:shanying,100

所以,A滿足assignable以及copyable,但是不滿足comparable,所以,它不能用于set容器。為了達到目的,需要做的就是添加一個對operator<的重載。

參考修正后的代碼:
C/C++ code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include?<iostream> #include?<string> #include?<set> using?namespace?std; struct?A{ string?str; int?score; }; bool?operator<(const?A&?lhs,?const?A&?rhs)?{ ????return?lhs.score<rhs.score; } void?test(){ set<A>s; A?a,b,c; a.str="shanying";a.score=100; b.str="shanying";b.score=0; c.str="baitoudiao";c.score=50; A?cpy(a); cout<<"orign:"<<a.str<<','<<a.score<<endl; cout<<"copy:"<<cpy.str<<','<<cpy.score<<endl; A?assigned; assigned?=?a; cout<<"assigned:"<<assigned.str<<','<<assigned.score<<endl; cout<<"a<b?"<<(a<b?"true":"false")<<endl; s.insert(a); s.insert(b); s.insert(c); cout<<"size:"<<s.size()<<endl; } int?main()?{ ????test(); ????return?0; }


編譯可通過,輸出為:
orign:shanying,100
copy:shanying,100
assigned:shanying,100
a<b?false
size:3

總結

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

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