ããã«ã¡ã¯ãHabrïŒ
仿¥ã¯ãããããããŠäŸ¿å©ãªæ©èœã«ã€ããŠã話ããããšæããŸãã 圌女ã®ååã¯ã³ã³ããã©ã€ãã©ãªã§ãã ããã¯1ã€ã§ã¯ãªãã䟿å©ãªæ©èœã®ã°ã«ãŒãå
šäœã§ãã ãããŠããããã®ç®çã¯ãèŠçŽ ã®ã°ã«ãŒãã®ç·šæãšåŠçã§ãã é¢çœãã§ããã ã§ã¯ã詳ããèŠãŠã¿ãŸããããç«ãžããããã
ãšã³ããªãŒ
ã²ãšã€ã ãèšãããããšããããŸã-ãã®èšäºã¯ããã°ã©ããŒã®åå¿è
ã察象ãšããŠããŸãã ç¶ããŸãã
ããã°ã©ãã³ã°ã§æãäžè¬çãªã¿ã¹ã¯ã®1ã€ã¯ãèŠçŽ ã®ã°ã«ãŒãã®åŠçãæŽçããããšã§ãã ããã°ã©ããŒã¯åœŒå¥³ãšäžç·ã«å€ãã®èžæ°ãåãã çµå±ã®ãšããããã¹ãŠãæ£ã«çœ®ãå¿
èŠããããŸã...ããããQtã«ã¯çŽ æŽããããã«ããŒããããŸã-ã³ã³ããã©ã€ãã©ãªã§ãã ãã®ãã«ããŒã¯QtCoreã¢ãžã¥ãŒã«ã«ãããŸãããããã£ãŠã远å ã®ã€ã³ã¯ã«ãŒãã¯å¿
èŠãããŸããã ããã§ã¯ãè¡ããŸãããïŒ
QVectorãã¯ãã«
ãã¯ãã«ã¯ãéåžžã®é
åã«éåžžã«ãã䌌ãããŒã¿æ§é ã§ãã ãã ãããã¯ãã«ã¯ã©ã¹ã䜿çšãããšãåçŽãªé
åã«æ¯ã¹ãŠããã€ãã®å©ç¹ããããŸãã ããšãã°ããã¯ãã«å
ã®èŠçŽ ã®æ°ïŒãµã€ãºïŒã確èªããããåçã«æ¡åŒµãããã§ããŸãã ãã®ã³ã³ããã¯ãä»ã®ã¿ã€ãã®ã³ã³ãããããçµæžçã§ãã é æ¬¡ã³ã³ããã®æåŸã«èŠçŽ ã远å ããã«ã¯ã
push_backïŒïŒã¡ãœããã䜿çšã§ããŸãã ãã¯ãã«ã®èŠçŽ ã«ã¯ãã€ã³ããã¯ã¹æŒç®å[]ãšå埩åã®äž¡æ¹ã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸãã äŸïŒ
QVector<int> vec; vec.push_back(10);
æšå®ãããŸã
-QVectorïŒ10,20,30ïŒ ã
QByteArrayãã€ãé
å
ãã®ã³ã³ããã¯QVectorã«éåžžã«äŒŒãŠããŸãããéãã¯ãã³ãã¬ãŒãã¯ã©ã¹ã§ã¯
ãªãããµã€ãºã1ãã€ãã®èŠçŽ ã®ã¿ãæ ŒçŽã§ããããšã§ãã äžéããŒã¿ã¹ãã¬ãŒãžãå¿
èŠãªå Žåã¯ãã¿ã€ãQByteArrayã®ãªããžã§ã¯ãã䜿çšã§ããŸãã é
åèŠçŽ ã®æ°ã¯ã³ã³ã¹ãã©ã¯ã¿ãŒã§èšå®ã§ãã[]æŒç®åã䜿çšããŠé
åèŠçŽ ã«ã¢ã¯ã»ã¹ã§ããŸãã
QByteArray arr(3); arr[0] = arr[1] = 0xFF; arr[2] = 0x0;
QByteArrayã¯ã©ã¹ã®ãªããžã§ã¯ãã®ããŒã¿ã«å§çž®æäœãšé倿ãé©çšããããšãã§ããŸãã ããã¯ã2ã€ã®ã°ããŒãã«é¢æ°
qCompressïŒïŒããã³
qUncompressïŒïŒã䜿çšããŠå®çŸãããŸãã ããŒã¿ãå§çž®ããã³è§£åããã ãã§ãïŒ
QByteArray a = "Some text..."; QByteArray aCompressed = qCompress(a); qDebug << qUncompress(aCompressed);
äžéšã®ããã¹ã...ã衚瀺ãããŸãã
QBitArrayãããé
å
ãã®ã¯ã©ã¹ã¯ãããïŒãŸãã¯
ããŒã« ïŒé
åã管çããŸãã æ ŒçŽãããåå€ã¯ãäœåãªã¡ã¢ãªãç¡é§ã«ããããšãªãã1ãããã®ã¿ãåããŸãã ãã®åã¯ã
boolåã®å€æ°ã倿°æ ŒçŽããããã«äœ¿çšãããŸãã
QBitArray arr(3); arr[0] = arr[1] = true; arr[2] = false;
QListããã³QLinkedListãªã¹ã
ãªã¹ãã¯ãé¢é£ããã¢ã€ãã ã®é åºä»ããããã»ããã§ããããŒã¿æ§é ã§ãã ãã¯ãã«ãšãã¥ãŒã«å¯Ÿãããªã¹ãã®å©ç¹ã¯ããããã®æäœãå®è¡ããããã«æå°éã®ãã€ã³ã¿ãŒã®ã¿ã倿Žããããããä»»æã®äœçœ®ã§èŠçŽ ãæ¿å
¥ããã³åé€ããæ¹ãå¹ççã§ããããšã§ããå¯äžã®äŸå€ã¯ãªã¹ãã®äžå€®ã«èŠçŽ ãæ¿å
¥ããããšã§ãã ããããæ¬ ç¹ããããŸã-ãªã¹ãã¯ã€ã³ããã¯ã¹ã«ãã£ãŠãªã¹ãã®ç¹å®ã®èŠçŽ ãæ€çŽ¢ããã®ã«ããŸãé©ããŠããªãããããã®ç®çã«ã¯ãã¯ã¿ãŒã䜿çšããã®ãæé©ã§ãã
ãªã¹ãã¯QListãã³ãã¬ãŒãã¯ã©ã¹ã«ãã£ãŠå®è£
ãããŸãã äžè¬çã«ããã®ã¯ã©ã¹ã¯èŠçŽ ãžã®ãã€ã³ã¿ã®é
åã§ãã
ãªã¹ããæäœããããã®ç¹å®ã®æäœïŒ
- moveïŒïŒ -èŠçŽ ãããäœçœ®ããå¥ã®äœçœ®ã«ç§»åããŸãã
- removeFirstïŒïŒ -ãªã¹ãã®æåã®èŠçŽ ãåé€ããŸã ã
- removeLastïŒïŒ -ãªã¹ãå
ã®æåŸã®ã¢ã€ãã ãåé€ããŸã ã
- swapïŒïŒ -æå®ãããäœçœ®ã§ãªã¹ãã®2ã€ã®èŠçŽ ã亀æããŸãã
- takeAtïŒïŒ -æå®ãããäœçœ®ã®ã¢ã€ãã ãè¿ãããªã¹ãããåé€ããŸãã
- takeFirstïŒïŒ -æåã®èŠçŽ ãè¿ãããªã¹ãããåé€ããŸãã
- takeLastïŒïŒ -æåŸã®ã¢ã€ãã ãè¿ãããªã¹ãããåé€ããŸãã
- toSetïŒïŒ -ãªã¹ãã«å«ãŸããããŒã¿ãå«ãQSetã³ã³ãããè¿ããŸãã
- toStdListïŒïŒ -ãªã¹ãã®èŠçŽ ãå«ãæšæºSTLãªã¹ãstd :: Listãè¿ããŸãã
- toVectorïŒïŒ -ãªã¹ãã«å«ãŸããããŒã¿ãå«ãQVectorãã¯ãã«ãè¿ããŸãã
èŠçŽ ã®å€ã倿Žããªãå Žåãå¹çäžã®çç±ããã[]æŒç®åã®äœ¿çšã¯æšå¥šãããŸããã 代ããã«
atïŒïŒã¡ãœããã䜿çšããŸããããã¯ãèŠçŽ ãžã®å®æ°åç
§ãè¿ãããã§ãã
æãäžè¬çãªæäœã®1ã€ã¯ããªã¹ããèµ°æ»ããŠãåãªã¹ãé
ç®ã®å€ãé çªã«ååŸããããšã§ãã äŸïŒ
QList<int> list; list << 10 << 20 << 30; QValueList<int>::iterator it = list.begin();
ã³ã³ãœãŒã«ã«ã¯ä»¥äžã衚瀺ãããŸãã
èŠçŽ ïŒ10
èŠçŽ ïŒ20
èŠçŽ ïŒ30
倧ããªãªã¹ãã䜿çšããå ŽåããèŠçŽ ãæ¿å
¥ããå¿
èŠãããå Žåã¯ãäºéã«ãªã³ã¯ããã
QLinkedListãªã¹ãã䜿çšããæ¹ãå¹ççã§ãã ãã®ã³ã³ãããŒã¯
QListããã倧
é£ãã§ãããæ¿å
¥ãŸãã¯å逿äœã¯ãåé€ãŸãã¯æ¿å
¥ãããèŠçŽ ã®äœçœ®ã«é¢ä¿ãªãã4ã€ã®ãã€ã³ã¿ãŒãåå®çŸ©ããããšã«ãªããŸãã
qstackã®ã¹ã¿ãã¯
ã¹ã¿ãã¯ã¯ãLast In First Out-last comeãfirst goã®ååã«åºã¥ããŠæ©èœããããŒã¿æ§é ãå®è£
ããŸãã ã€ãŸããä»ã®ãã¹ãŠã®èŠçŽ ã®åŸã«æ¿å
¥ãããèŠçŽ ãæåã«ã¹ã¿ãã¯ããåé€ãããŸãã
QStackã¯ã©ã¹ã¯ãã¹ã¿ãã¯æ§é ã®å®è£
ã§ãã ãã®ã¯ã©ã¹ã¯
QVectorããç¶æ¿ãã
ãŸã ã ã¹ã¿ãã¯ã«ã¢ã€ãã ã眮ãããã»ã¹ã¯ãéåžžpushãšåŒã°
ããããããäžçªäžã®ã¢ã€ãã ãããããã
ããšã¯ poping
ãšåŒã°ããŸãã ããã·ã¥æäœããšã«ã¹ã¿ãã¯ãµã€ãºã1ãã€å¢å ããããã·ã¥æäœããšã«1ãã€æžå°ããŸãããããã®æäœã§ã¯ã
ããã·ã¥ïŒïŒããã³
ãããïŒïŒé¢æ°ã
QStackã¯ã©ã¹ã§å®çŸ©ãããŸãã
topïŒïŒã¡ãœããã¯ããããèŠçŽ ãžã®ãªã³ã¯ãè¿ããŸãã ã¹ã¿ãã¯ã®äœ¿çšäŸïŒ
QStack<QString> stk; stk.push("Era");
ã³ã³ãœãŒã«ã«ã¯æ¬¡ã®ããã«ãªããŸãã
èŠçŽ ïŒãåéã
èŠçŽ ïŒãCorvus Coraxã
èŠçŽ ïŒãæä»£ã
QQueueãã¥ãŒ
ãã¥ãŒã¯ãååã«åŸã£ãŠåäœããããŒã¿æ§é ãå®è£
ããŸã-å
çé ã§ãã
QListããç¶æ¿ãã
QQueueã¯ã©ã¹ã«ãã¥ãŒãå®è£
ã
ãŸãã ã
次ã®äŸã¯ããã¥ãŒã®äœ¿çšäŸã瀺ããŠããŸãã
QQueue<QString> que; que.enqueue("Era"); que.enqueue("Corvus Corax"); que.enqueue("Gathering"); while (!que.empty()) { qDebug() << "Element:" << que.dequeue(); }
ã³ã³ãœãŒã«ã«ã¯æ¬¡ã®ããã«ãªããŸãã
èŠçŽ ïŒãæä»£ã
èŠçŽ ïŒãCorvus Coraxã
èŠçŽ ïŒãåéã
èŸæžQMapãQMultiMap
èŸæžã¯ãååãšããŠãæ¥åžžç掻ã§äœ¿çšãããæ®éã®èŸæžã«äŒŒãŠããŸãã ããŒå€ã§ã€ã³ããã¯ã¹ä»ããããåãã¿ã€ãã®ã¢ã€ãã ãä¿åããŸãã èŸæžã®å©ç¹ã¯ãç¹å®ã®ããŒã«é¢é£ä»ããããå€ããã°ããååŸã§ããããšã§ãã éè€ãèš±å¯ããè€æ°ã®èŸæžãé€ããããŒã¯äžæã§ãªããã°ãªããŸããã
ãã®ã¿ã€ãã®ã³ã³ããã§ã¯ãèŠçŽ ãèŠã€ããããã®ããŒãšãšãã«å
¥åããŸããããŒã¯ä»»æã®ã¿ã€ãã®å€ã«ããããšãã§ããŸãã
QMapãã£ã¯ã·ã§ããªã®å ŽåãåãããŒãæã€2ã€ã®ç°ãªãèŠçŽ ãå
¥åãããªãããã«ããå¿
èŠããããŸãããããã®èŠçŽ ã®1ã€ãæœåºã§ããªãããã§ãã åããŒã¯äžæã§ããå¿
èŠããããŸãã
QMapãªããžã§ã¯ããäœæãããšãã¯ããã®ãµã€ãºãã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ãå¿
èŠããããŸãã ãã®ãµã€ãºã¯ãä»ã®ã³ã³ããã¯ã©ã¹ã§éåžžè¡ãããŠããããã«ãèŠçŽ ã®æå€§æ°ãå¶éãããµã€ãºã§ã¯ãããŸããããäœçœ®ã®æ°ã衚ããŸãã äœçœ®ã®æ°ã¯ãæ ŒçŽããããšäºæ³ãããèŠçŽ ã®æ°ããã倧ããããå¿
èŠããããŸããããããªããšãèŸæžå
ã®èŠçŽ ã®æ€çŽ¢ãååã«å¹æçã«å®è¡ãããŸããã ãã®å ŽåãèŠçŽ ã®é
眮ããã䟿å©ã«ãªãããããã®å€ã¯çŽ æ°ã®ã«ããŽãªã«å±ããââããšãæãŸããã§ãã
ããã€ãã®æ¹æ³ïŒ
- iowerBoundïŒïŒ -æå®ãããããŒãæã€æåã®èŠçŽ ã«æ»ããŸãã
- toStdMapïŒïŒ -èŸæžã®èŠçŽ ãæã€STLèŸæžãè¿ããŸãã
- upperBoundïŒïŒ -æå®ãããããŒãæã€æåŸã®èŠçŽ ã«æ»ããŸãã
èŸæžé
ç®ã«ã¢ã¯ã»ã¹ããæãäžè¬çãªæ¹æ³ã®1ã€ã¯ã[]æŒç®åã§ããŒã䜿çšããããšã§ãã ãã ããããŒãšå€ã¯ã€ãã¬ãŒã¿ã¡ãœãã
keyïŒïŒãš
valueïŒïŒãä»ããŠååŸã§ãããããããã¯ãªããŠãããŸããŸãããããšãã°ã
QMap<QString,QString> mapPhonebook; mapPhonebook["Piggy"] = "+380 93 785 11 11"; mapPhonebook["Kermit"] = "+7 85 123 65 56"; mapPhonebook["Gonzo"] = "+49 73 631 32 21"; QMap<QString,QString>::iterator it = mapPhonebook.begin(); for(;it != mapPhonebook.end(); ++it) { qDebug() << "Name:" << it.key() << "Phone:" << it.value(); }
ã³ã³ãœãŒã«ã«ã¯æ¬¡ã®ããã«ãªããŸãã
ååïŒãã¡æ®ãé»è©±ïŒ+49 73 631 32 21
ååïŒã«ãŒãããé»è©±ïŒ+7 85123 65562 21
ååïŒè²¯éç®±é»è©±ïŒ+380 93 785 11 11
QHashããã³QMultiHashããã·ã¥
ããã·ã¥ã®æ©èœã¯
QMapãšéåžžã«äŒŒãŠããŸãããå¯äžã®éãã¯ãããŒã§ãœãŒããã代ããã«ããã®ã¯ã©ã¹ãããã·ã¥ããŒãã«ã䜿çšããããšã§ãã ããã«ããã
QMapãããã¯ããã«é«éã«ããŒå€ãæ€çŽ¢ã§ããŸãã
QMapãšåæ§ã«ãèŠçŽ ãååšããªãããŒãæå®ãããšèŠçŽ ãäœæããããããã€ã³ããã¯ã¹æŒç®å[]ã䜿çšããå Žåã¯æ³šæãå¿
èŠã§ãã ãããã£ãŠãã³ã³ããã®
containsïŒïŒã¡ãœããã䜿çšããŠãããŒã«ãã€ã³ããããèŠçŽ ã®ååšãåžžã«ç¢ºèªããããšãéèŠã§ãã
ç¬èªã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã
QHashã«é
眮ããå Žåã¯ãã¯ã©ã¹ã«æ¯èŒæŒç®å==ãšç¹æ®é¢æ°
qHashïŒïŒãå®è£
ããå¿
èŠããããŸãã æ¯èŒæŒç®åã®å®è£
äŸã¯æ¬¡ã®ãšããã§ãã
inline bool operator==(const MyClass& mc1, const MyClass& mc2) { return (mc1.firstName() == mc2.firstName() && mc1.secondName() == mc2.secondName() ); }
qHashïŒïŒé¢æ°ã¯ãããã·ã¥å
ã®åã¢ã€ãã ã«å¯ŸããŠäžæã§ãªããã°ãªããªãæ°å€ãè¿ãå¿
èŠããããŸãã äŸïŒ
inline uint qHash(const MyClass& mc) { return qHash(mc.firstName()) ^ qHash(mc.secondName()); }
QMultiHashã¯ã©ã¹ã¯
QHashããç¶æ¿ãã
ãŸã ã åãããŒã§å€ãé
眮ããããšãã§ããäžè¬ã«
QMultiMapã«äŒŒãŠããŸããã芪ã¯ã©ã¹ã®è©³çްãèæ
®ããŸãã
å€ãã®QSet
ãã€ãã®æ°åŠè
ã²ãªã«ã¯ã»ã«ã³ããŒã«ãèšã£ãããã«ããå€ãã¯å€ããç§ãã¡ã¯ç²Ÿç¥çã«ã¯1ã€ãšããŠæå³ããŸããã ããã¯ãTulipã®ã³ã³ããã¹ãã§ã¯ãèŠçŽ ãäœããã®é åºã§æžã蟌ã¿ãå€ãéåžžã«è¿
éã«è¡šç€ºãããŠããªã³ãã€ã³ã¿ãŒã»ã¯ã·ã§ã³ãå·®ãªã©ã®ã»ããã®ç¹æ§ã§ããæäœãå®è¡ããæ©èœãæäŸãã
QSetã³ã³ãããŒã«ãããŸããã åææ¡ä»¶ã¯ãããŒãç°ãªãå¿
èŠãããããšã§ãã
QSetã³ã³ããã¯ãããŒã¿ããã°ããååŸããããã®é åºãªããªã¹ããšããŠäœ¿çšã§ããŸãã
ã»ããã§å®è¡ã§ããæäœïŒçµåã亀差ãå·®ã
2ã€ã®ã»ãããäœæãããããã«èŠçŽ ãæžã蟌ã¿ãŸãã
QSet<QString> set1; QSet<QString> set2; set1 << "Lorem" << "Ipsum" << "Dolor"; set2 << "Sit" << "Amet" << "Lorem";
ããã2ã€ã®ã»ãããçµåããæäœãå®è¡ããã»ããã®èŠçŽ ã倿Žãããªãããã«ããããã«ãäžéã®
setResultã»ãããå°å
¥ããŸãã
QSet<QString> setResult = set1; setResult.unite(set2); qDebug() << " = " << setResult.toList();
以äžãç»é¢ã«è¡šç€ºãããŸãã
Union =ïŒãLoremãããIpsumãããDolorãããSitãããAmetãïŒ
åæ§ã«ã
亀差ïŒïŒãšå·®ïŒ
æžç®ïŒïŒïŒãå®è¡ãããŸãã
ãŸãšã
仿¥ãèªè
ã¯ããããçš®é¡ã®Qtã³ã³ãããæäœããæ¹æ³ãåŠãã§ããã¯ãã§ãã 仿¥ãç§ã¯å
šäœåã®ã»ãã®äžéšã話ããã ã¢ã«ãŽãªãºã ãæ£èŠè¡šçŸãQVariantãªã©ãããã«å
ã«ãããŸãã å€åç§ã¯ãããã«ã€ããŠæžããŸãïŒã
æåŠ
- 1.ããã¯ã¹ã·ã¥ãªãŒã Qt 4.5-ãããã§ãã·ã§ãã«C ++ããã°ã©ãã³ã°
- 2. Qtãªãã¡ã¬ã³ã¹ããã¥ã¡ã³ã
PSãã®èšäºã¯ãåå¿è
ããã°ã©ããŒã®ãã¬ãŒãã³ã°ãç®çãšããŠããŸãã