![ç»å](https://habrastorage.org/getpro/habr/post_images/de5/1e8/b80/de51e8b8089eb68899bb3ac76563768c.jpg)
2014幎ã®æ°å¹ŽãŸã§æ°æéãæ®ã£ãŠããŸãããããšããã2014幎ã«ã¯æ°ããC ++ 14æšæºãçŽæãããŸããã ãã ãã倧ããªç¬ç«ããæŽæ°ã§ã¯ãªããC ++ 11ã®æ¹è¯çã§ãããçŸåšã®ããŒãžã§ã³ã®èšèªãå®å šã«èŠãããã°ä¿®æ£ã§ãã ãã®ãããªèæ¯ã«å¯ŸããŠã electronicdesign.comã® William Wongã¯ãC ++ã®äœæè ã§ããBjarne Stroustrupã«ã€ã³ã¿ãã¥ãŒããŸããã äŒè©±ã¯ãC ++éçºã®æŽå²ãšC ++ 11æšæºã®æ©èœããããã®ããã°ã©ãã³ã°èšèªã®åŠç¿ã®åé¡ãŸã§ãããã€ãã®ãããã¯ã«è§ŠããŸããã
ç§ã¯ä»¥åããã®ã€ã³ã¿ãã¥ãŒããããã€ãã®çšèªãšæŠå¿µã«è±èªçã®ã¿ã§åºããããŸããïŒããšãã°ãITã®ã³ã³ããã¹ãã«åã蟌ãŸããåèªïŒãç§ã¯èªåã確信ã§ããªãäžè¬çã«åãå ¥ãããã翻蚳ãèŠã€ããããšãã§ããŸããã§ããã ãããããã³ä»ã®è«äºã®ããã±ãŒã¹ã§ã¯ãæ¬åŒ§å ã«çšèªã®è±èªçã瀺ãããå®å šã«ç¿»èš³ããã«æ®ããŸããã
èšäºã®æåŸã«ãªã³ã¯ãšã¡ã¢ããããŸãã ãã®ãªãœãŒã¹ã®ææè ã¯ã芪åã«ãã®ã€ã³ã¿ãã¥ãŒã翻蚳ããHabréã«ç¿»èš³ãå ¬éããããšãèš±å¯ããŸãããããœãŒã¹ãç¹å®ã®æ¹æ³ã§ç€ºãããšã䞻匵ããŸããã ç§ã責ããªãã§ãã ããã ãªã³ã¯ã®çŽåŸãå®éã®ç¿»èš³ã§ãã
Electronic Designãäœæããèšäºã2013幎10æ29æ¥ãelectronicdesign.com / dev-tools / interview-bjarne-stroustrup-discusses-cããã®ç¿»èš³
ä»æ¥ãCããã³C ++ããã°ã©ãã³ã°èšèªã¯ãçµã¿èŸŒã¿ã·ã¹ãã ã®åéãããã³ãµãŒãããŒãã£ã¢ããªã±ãŒã·ã§ã³çšã®ãã©ãããã©ãŒã ãæ§ç¯ããã¿ã¹ã¯ã§æã人æ°ããããŸãã C ++ã®äœæè ã¯BjörnStraustrupã§ãã 圌ã¯ããã®ããã°ã©ãã³ã°èšèªïŒC ++ 11ãå«ãïŒã®æšæºã®éçºã«åŒãç¶ãç©æ¥µçã«åå ããŠããŸãã 圌ã¯æ¬ã®äžã§ãããšãã°ãããã°ã©ãã³ã°ïŒC ++ã䜿çšããååãšå®è·µãã§ãã®èšèªã«ã€ããŠå€ãã®ããšãæžããŠããŸãã BjörnStraustrupã¯ãC ++èšèªèªäœãšãã®éçºã«é¢ããããã€ãã®è³ªåã«çããããšã«èŠªåã«åæããŸããã
ã©ã®ããã«ããŠC ++ãéçºããŸãããïŒ
ç§ã¯ãUnixã«ãŒãã«ããã«ãããã»ããµãŸãã¯é«æ§èœããŒã«ã«ãšãªã¢ãããã¯ãŒã¯ã«ãã£ãŠå®è¡ãããè€æ°ã®éšåã«åå²ã§ãããããžã§ã¯ãã«åãçµãã§ããŸããã ãããŠãããŒããŠã§ã¢ã§åäœããã·ã¹ãã ããã°ã©ãã³ã°ã¿ã¹ã¯ã«åªããããã©ãŒãã³ã¹ãæäŸããè€éãªã¢ãŒããã¯ãã£ãåããã·ã¹ãã ã§ã®äœæ¥ã«ã䜿çšã§ããããŒã«ãå¿ èŠã§ããã ãã ãããã®æç¹ïŒ1979幎ãã1980幎ïŒã§ã¯ãæ¢åã®ããã°ã©ãã³ã°èšèªã®ããããã3ã€ã®æ¡ä»¶ããã¹ãŠåæã«æºãããã®ã¯ãããŸããã§ããã ããã§ãSimulaã®ãããªã¯ã©ã¹ã®æŠå¿µãCã«è¿œå ããããšã«ããŸããã æåã«ãé¢æ°ã®åŒæ°ïŒåŸã«é¢æ°ã®ãããã¿ã€ãã«ãªããŸããïŒãã³ã³ã¹ãã©ã¯ã¿ããã¹ãã©ã¯ã¿ãããã³åçŽãªç¶æ¿ã®ãã§ãã¯ãšå€æãå®è£ ããŸããã C ++ã®æåã®ããŒãžã§ã³ã¯ãC with ClassesããšåŒã°ããŠããŸããã ãšããã§ãäžè¬åãããããã°ã©ãã³ã°ïŒæ±çšããã°ã©ãã³ã°ïŒã®æãåçŽãªãµããŒãã®ããã«ããã¯ãã䜿çšãããããšã«èå³ããããŸãã å°æ¥ããã®ã¢ãããŒãã§ã¯å¿ èŠãªã¹ã±ãŒã©ããªãã£ãåŸãããªãããšã«æ°ä»ãããã¯ãã®ä»£ããã«ãã³ãã¬ãŒããè¿œå ããŸããã
1985幎ã®åçšãªãªãŒã¹ãŸã§ãä»åŸæ°å¹Žéã§C ++èšèªã®ã¢ãŒããã¯ãã£ãšå®è£ ãæ¹åããŸããã åœæãããŒããŠã§ã¢ãžã®ã¢ã¯ã»ã¹ã®ããã©ãŒãã³ã¹ãšé床ã¯ãä»æ¥ã®ããã«éåžžã«éèŠãªç¹æ§ã§ããã ç§ã¯ãC ++ã§Cèšèªã®ãã¹ãŠã®æ©èœãå®è£ ããããããããå¹æçã«ããå¿ èŠããããšæããŸããã ããšãã°ãåæã®æ®µéã§ã¯ãã³ããŒã³ã³ã¹ãã©ã¯ã¿ãŒã®å®è£ ã«äœ¿çšãããæ§é äœãCããã3ïŒ å€ãã®ã¡ã¢ãªãæ¶è²»ããããšãããããŸããããããã¹ãã§ã¯ãªããšå€æããé±æ«ãŸã§ã«ãã¹ãŠãä¿®æ£ããŸããã ããã°ã©ããããã»ããµæéã倱ãããšãªãã¯ã©ã¹ãæŸæ£ããããšãé²ãããã«ãã€ã³ã©ã€ã³é¢æ°ãè¿œå ãããŸããã äžè¬çã«ã䜿çšããããŒã«ã¯è¡šçŸåè±ãã§ããã ãã§ãªããæé«ã®èŠä»¶ãæã€ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããããã«ååã«å¹æçã§ããã¹ãã ãšç¢ºä¿¡ããŠããŸããã
C ++èšèªãéçºãããšããäœã®ããã«åªåããŸãããïŒ
C ++ãå°ãªããšãC.ãšåããããå¹ççã«ããŒããŠã§ã¢ã§åäœããããšãä¿èšŒããããã«ãããã«ãããã°ã©ããŒãæéãã¡ã¢ãªãªãŒã¯ãçºçãããããšãªããæãã¯ã€ã«ããªã¢ã€ãã¢ãè¡šçŸã§ããæœè±¡åã®éåžžã«éèŠãªæŠå¿µãèããŸããã圌ãã¯ããããç¬ç«ããå®è£ ã§çŽé¢ããã§ãããã
ãã®èŠä»¶ã«ã¯ãCã§ã®åŒ±ãåä»ããšã¯å¯Ÿç §çã«ã 匷ãéçåä»ãã®äœ¿çšãå¿ èŠã§ãã
C ++èšèªã¯ãããã°ã©ãã³ã°ã«çå£ã«åãçµãã§ãã人ã ãã€ãŸããã®åéã®å°é家åãã«éçºãããŸããã åå¿è ã§ã䜿çšããããšãã§ããŸãããå€ãã®å ŽåãããŸããŸãªèª€è§£ãäžæºãçãã誰ããC ++ã§ããã°ã©ãã³ã°ããããšãåŠã¶ããšãã§ããããã®èšèªã§å®è£ ããã®ãéåžžã«é£ããããšããããŸãã ãã¡ããããããããã®ã«å¯Ÿå¿ããæ±çšããã°ã©ãã³ã°èšèªã¯ãããŸãããC++ã¯ãã®ããã«ã¯äœæãããŠããŸããã ãã ãããã®èšèªã¯ãã·ã¹ãã ããã°ã©ãã³ã°ãã³ã³ãã¥ãŒã¿ãŒãªãœãŒã¹ã«å³ããå¶éãããããã°ã©ã ããã°ã©ãã³ã°ãªã©ãéçºãããåéã§ã¯éåžžã«å¹æçã§ãã C ++ã«ã¯ããã®ãã¯ãŒãæ¬åœã«å¿ èŠãªãšããã«å¹æµãããã®ããããŸããã代ããã«ãJavaScriptãRubyã§ç°¡åãªWebã¢ããªã±ãŒã·ã§ã³ãäœæã§ãããã©ããã¯ããŸãæ°ã«ããŸããã C ++ã¯æ¬è³ªçã«äžçšåºŠã®è€éãã®åé¡ã解決ããããã«èšèšããããã®ã§ã¯ãªããããã°ã©ã ã®ããã©ãŒãã³ã¹ãšä¿¡é Œæ§ã«å¯Ÿããå³ããèŠä»¶ããããŸããã ãã¡ããããã®ãããªæ¡ä»¶ã§äœ¿çšããããšãã§ããä»æ¥ã§ã¯åºãå®è·µãããŠããŸãããããã«ã¯ãã£ãšè¯ãããã°ã©ãã³ã°èšèªãä»ã«ããããããããŸãã
ç§ã®èæžã C ++ ã®èšèšãšå®è£ ãããã³ããã°ã©ãã³ã°èšèªã®æŽå²äŒè°ã®ããã«æžããã2ã€ã®èšäºã§ãC ++ãéçºããéã«åŸã£ãéèŠãªååã«ã€ããŠè©±ããŸããã èŠããã«ãç§ã¯ãããã®ç®æšãèšå®ããŸããïŒ
- ããŒã¿æœè±¡åã®å¹æçãªãµããŒãã æœè±¡åã䜿çšããã³ãŒãã¯ã䜿çšããªãã³ãŒããšæ¯èŒããŠãªãŒããŒããããèš±å¯ããŸããã
- C ++èšèªãšãã®ã³ã³ãã€ã©ãŒãšã³ã³ãã¥ãŒã¿ãŒãšã®çžäºäœçšã®ååã¯ãCãæã£ãŠãããã®ãšå¯èœãªéãé¡äŒŒããŠããå¿ èŠããããŸãã
- æœè±¡åã§å®çŸã§ããå€§å¹ ãªã³ãŒãã®æè»æ§ãšã
- ã³ãŒãã®ä¿¡é Œæ§ãå³å¯ãªéçåä»ãã䜿çšããŠå®çŸãããŸãã
äžè¬çã«ãC ++ã¯é«å質ã®ã³ãŒããäœæã§ããããã«èšèšãããŠããŸãã å®ç掻ã®ããã®ããã°ã©ããŒã¯è€éãªã¿ã¹ã¯ã«çŽé¢ããŠããããã®ããã°ã©ãã³ã°èšèªã¯äººçãå€§å¹ ã«ç°¡çŽ åããŸãã
ãã¡ãããããããã¹ãŠã®ç®æšãäžåºŠã«éæããããšã¯äžå¯èœã§ãããC ++ã¯çæ³çã§ã¯ãããŸããã ãã ãã代ããã«èšèªãäœæããããšããç¡æ°ã®è©Šã¿ã«ãããããããå³å¯ãªèšèšãåããC ++ã¯ãããŸããŸãªå®çšçãªã¿ã¹ã¯ã«æé©ãªãœãªã¥ãŒã·ã§ã³ã§ãã
ããªãã¯æåããC ++èšèªæšæºã®éçºã«åå ããŸããã æéã®çµéãšãšãã«å€§ããå€åããŸãããïŒ èª°ãæ°ããæšæºãéçºããŠããŸããïŒ
èšãã®ã¯é£ããã§ãã æ£åŒãªæšæºã®éçºã¯éåžžã«é£ãããååãšããŠéå±ãªããžãã¹ã§ãã åªããçµéšãæã€äººã ã¯ãããæ±ã£ãŠããŸããã圌ãã¯ãã¹ãŠããã°ã©ãã³ã°ã®ãŸã£ããç°ãªãåéã®å°é家ã§ããããããããæšæºã«ã€ããŠã®ç¬èªã®ããžã§ã³ãæã£ãŠããŸãã ãã®ãããã³ã³ã»ã³ãµã¹ãåŸãã®ã¯å°é£ã§æéãããããŸãããå¿ èŠã§ãããã¹ãŠã®èŠä»¶ãæºããããã«ããã«æ©èœããããã§ã¯ãªããããã°ã©ããŒã«æ ¹æ¬çã«æ°ããããŒã«ã®äœ¿çšã匷å¶ããããšã¯äžå¯èœã§ãã é²æ©ã¯æšæºã«è¿œå ãå«ãŸããå Žåã«ã®ã¿çºçãããã®éèŠæ§ã¯äžè¬çã«èªèãããŠããŸãã å§å¡äŒã«åå ããããšã¯ã§ããŸããããåžžã«å°ããªããšã«éäžããããšãã§ããŸãã ããªãã¯å šäœãšããŠå šäœåãèŠãŠãä»ã®äººãšå ±éã®æèŠã«éããããšãã§ããå¿ èŠããããŸãã ç§ã®æšå®ã«ãããšãå§å¡äŒã«ã¯çŽ100ã®çµç¹ããããŠãããã300人以äžã®éçºè èªèº«ãå«ãŸããŠããŸãã ããã¯ã以åã®2ã3åã§ãã æåŸã®äŒè°ã§ã®ã¿çŽ100人ãåå ããŸããã
2014幎ã«ã¯ãæ°ããæšæºC ++ 14ããªãªãŒã¹ããäºå®ã§ãã æå°éã®é©æ°ãšããã€ãã®ä¿®æ£ãè¡ãããå§å¡äŒã®å€§åã¯ãã§ã«ãã®å¿ èŠæ§ã«æ祚ããŠããŸãã 2014幎ã«ã¯èª°ããæ¢ã«C ++ 14ã䜿çšãããã®åŸ2017幎ã«C ++ 17ããªãªãŒã¹ããäºå®ã§ãã ãããããã®æŽæ°ã¯ã¯ããã«éèŠã§ãããããã¿ã€ãã³ã°ãå€æããããšã¯å°é£ã§ãã
ISO C ++æšæºéçºå§å¡äŒã«ã¯ãããããéã§ããå°ä»»ã®éçºè ã§ãããããèªäœã«ã¯ãªãœãŒã¹ããããŸããã åå è ã®è³éã«å®å šã«åºã¥ããŠããŸãã ããšãã°ãå§å¡äŒã®äžå¡ã«ãªãããã«ã圌ãã¯å¹Žé1,200ãã«ãæ¯æããŸãã C ++ã«ã¯ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããã®éåžžã®ã©ã€ãã©ãªããã¿ã¹ã¯ã®äžŠååŠçã®éåžžã®ãµããŒãã¯ãªãããšåœŒãã¯èšãããšãã§ããŸãã ã¯ããç¥ã£ãŠããŸãã æå¥ãèšããããããããã®ã¿ã¹ã¯ãæãèµ·ããããæ¹ãè¯ãã§ãããã ããã°ã©ããŒã¯ã»ãšãã©ããªããããç¹å®ã®éçºè ã®å©çã®ããã«ã€ãããŒã·ã§ã³ãçã¿åºãããããšããããããŸãã
çµã¿èŸŒã¿ã·ã¹ãã ãéçºãããšããå€ãã®ããã°ã©ããŒã¯Cã䜿çšããããšã奜ã¿ãŸããããã¯ãC ++ãããåçŽã§ãããããŒããŠã§ã¢ã®éçºã«ããé©ããŠããããã§ãã C ++ã®è€éãã¯ãçµã¿èŸŒã¿ã·ã¹ãã ãéçºããäžã§æ¬åœã«é害ã«ãªãå¿ èŠããããŸããïŒ
ãŸã£ãããããŸããã Cã¹ã¿ã€ã«ã®ããã°ã©ãã³ã°ã«åºå·ããå ŽåãC ++ã¯Cã»ã©è€éã§ã¯ãªããããŒããŠã§ã¢ã§ã®éçºã«ãé©ããŠããŸãã ãããŠç¢ºãã«ãC ++ã¯Cãããã¯ããã«å¹ççã§ããCã§æžãæããŠãã³ãŒããæžãããçç£æ§ãé«ããããå¹ççã«ãªããããªC ++ããã°ã©ã ãèŠãããšã¯ãããŸãã-äžè¬ã«ãããå¹ççã§ãã ãããå¯èœã ãšã¯æããªãã
ãCã¯C ++ãããåªããŠããããšããç¥è©±ã¯ãå€ãã®åå¿è ããã°ã©ãã«ãšã£ãŠæ··ä¹±ãæããŸãã ãã®ãããããšãã°ãåé¡ãçºçããå Žåãã·ã³ãã«ã§åŒ·åãªããŒã«ã䜿çšããã®ã§ã¯ãªããåžžã«äœããçºæããå®å šã«éèŠãªãã®ã䜿çšããããšããŸãã æçµçã«ã圌ãã¯éåžžã«è€éã§çŽããããã³ãŒããååŸããŸããããã¯ãšã©ãŒã®ããã«æšæºãšããŠæ¡çšãããŸãã ãã®å šäœã®ç¶æ³ã¯ãã ç§ãé©ãããŸãã 人ãäœããåãäžãããããéåžžã«é£ãããŠåœ¹ã«ç«ããªããšåžžã«èšããããã圌ã¯æåããŸããã ç§ãç¥ã£ãŠããããã«ãC ++ã§ã¯ãªãçŽç²ãªCã䜿çšããå¯äžã®ããããããçç±ã¯ãç¹å®ã®ãã©ãããã©ãŒã ã®éãããæ©èœã§ãã
ãã ããC ++ã®ç 究ã«ãããäžè¬çãªåŠçããã³åå¿è ã¯ã倧åŠã®ããã°ã©ãã³ã°ã³ãŒã¹ãç¿åŸããéçšã§ééããé »ç¹ã«çºçãããããéé£ããããšã¯ã§ããŸããã ãã€ãŠãçŽ10幎åãç§ã¯æ°å ¥çã§åœŒãå°ãæ©äŒããããŸããã ç§ã¯æç§æžã調ã¹ãŸããããé©ãã°ããã§ããïŒæ確ã§äœ¿ããããC ++ã³ã³ã¹ãã©ã¯ãã®ä»£ããã«ãæåã®æ¬ã¯Cèšèªã®ããŸããŸãªæçœã§ãªãå°ããªãã®ãèŠãŠãC ++ããŒã«ã¯éåžžã«è€éãªãã®ãšããŠæ瀺ãããŸããã ããã¯ãããã°ã©ãã³ã°ã«çå£ã«åãçµã¿ãã人ã ããæããããŸããã§ããã
çé¢ç®ã«èšã£ãŠãã ããïŒæšæºã©ã€ãã©ãªã®ãã¯ãã«ã¯Cã®é åãããè€éã§ããïŒ ãŸãã¯ãããšãã°ã
sort()
ããå¹ççã§ããæ®éçã§ããã«ãããããããçåŸã
qsort()
é¢æ°ã«æ £ããŠããã®ã¯ãªãã§ããïŒ C ++ã«ã¯Cãããå³å¯ãªåæå®ãããããããªããžã§ã¯ãã³ãŒããé«éã«ãªããŸãã
æç§æžã«æ»ã£ãŠã圌ãã¯ãã°ãã°ãC ++ãçŽç²ãªãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªãäœæããè©Šã¿ã®å€±æãšããŠèª¬æããŠããŸãã éåžžããã®ãããªã¹ããŒãã¡ã³ãã¯ãã»ãŒå šäœã®ã¢ãŒããã¯ãã£ãçžäºã«ç¶æ¿ãããã¯ã©ã¹ã®è€éãªéå±€ã«åå²ãããŠããã³ãŒãã·ãŒãå šäœã§ç€ºãããŠããŸãã çµæã¯ãå®å šã«éC ++é¢é£ã®æ¥ç¶ã§ãã ãã®ãããªã³ãŒãã¯Javaããã°ã©ã ã«äŒŒãŠãããæãæ²ããããšã«ãéåžžã¯ãã£ãããšåäœããŸãã
ãŸãããããã®æç§æžã®èè ã«ãã£ãŠæ瀺ãããŠããC ++ã奜ãã§ã¯ãããŸããã ããã«å¿ããŠãç§ã¯åŠçãšç¬åŠåãã®æ¬ãæžããŸãã-ãããã°ã©ãã³ã°ïŒC ++ã䜿çšããååãšå®è·µãã ãã®ç 究ã®ããã«ãããã°ã©ãã³ã°çµéšã¯å¿ èŠãããŸããããçµéšè±å¯ãªéçºè ã®éã§é¢å¿ãåŒã³èµ·ãããŸããã C ++ 11ã¬ãã¥ãŒã ããå¿ èŠãªå Žåã«ã®ã¿ããã®æ¬ã¯éåžžã«å€§ãããªããŸãã ãã®ç®çã®ããã«ãæ¬ãA Tour of C ++ãããå§ãããŸãã ISO C ++ã®ãã¹ãŠã®ããŒãã€ã³ããšããã180ããŒãžã®æšæºã©ã€ãã©ãªã«ã€ããŠèª¬æããŠããŸãã C ++ 11æšæºã¯ãClangããã³GCCã³ã³ãã€ã©ã§å®å šã«ãµããŒããããŠãããäžéšã¯Microsoft C ++ããã³ãã®ä»ã®å€ãã§ãµããŒããããŠããŸãããããŸã人æ°ã®ãªããã©ãããã©ãŒã ã§ã¯æ£ããåäœããªãå¯èœæ§ããããŸãã
C ++ 11ã«ã¯ãã©ã ãåŒããã«ãã¹ã¬ããããã°ã©ãã³ã°ã®ãµããŒããªã©ãå€ãã®é©æ°ããããŸããã 圌ãã¯éèŠããã£ããšæããŸããïŒ
ã¹ããªãŒã ãæäœããã«ã¯ãåžžã«ãµãŒãããŒãã£ã®ã©ã€ãã©ãªã䜿çšããå¿ èŠããããŸããã ãããã¯è¯ãã£ãã®ã§ãããéå»15幎éãæšæºã«ã¹ã¬ãããµããŒããè¿œå ãããã£ããããæçµçã«éæããŸããã 䞊åããã°ã©ãã³ã°ã®èŠ³ç¹ããèŠããšãC ++ 11ã®éèŠãªé©æ°ã¯ãã¡ã¢ãªã®ç·šæ ïŒã¡ãªã¿ã«ãCèšèªã«åçšãããŠããïŒãšããã«ãã¹ã¬ããããã°ã©ã ã®ç§»æ€æ§ã§ãã ãã ãããããŒãšããªã¢ã®ã¬ãã«ã§ããã°ã©ãã³ã°ããå ŽåãæãéèŠãªããšã¯å®å šãªåå€æã§ãããããŒéã§ããŒã¿ãåé¢ããŠè»¢éããããã«ãã¯ãã
void**
ã¯å¿ èŠãããŸããã ãã ããããã¯ããªãŒããã°ã©ãã³ã°ã®ããã®ããŒã«ãéèŠã§ãã
ã©ã ãåŒã«ã€ããŠã¯ãçŽ10幎éãC ++ã§ã®å®è£ ã«åãââçµãã§ããŸãããããã¯ãæ害ãšãããããæçšã§ãã ãµãŒãããŒãã£ã®ã©ã€ãã©ãªã¯ããã©ãŒãã³ã¹ãäœäžããåŸåããããŸãã
for
ã«ãŒãã«å¹æµããã©ã ãåŒã®ããã©ãŒãã³ã¹ãéæããããšãã§ããŸããã äŸãæããŸãã
double sum = 0; for (int i=0; i<v.size(); ++i) sum += v[i]; // array style
double sum = 0; for (auto p = v.begin(); p!=v.end(); ++p) sum += *p; // pointer style
double sum = 0; for_each(v.begin(),v.end(), [&](double d) { sum += d; }); // algorithm style
ãããã®3ã€ã®ã³ãŒãã»ã¯ã·ã§ã³ã¯åãããšãè¡ããåãããã©ãŒãã³ã¹ã§åäœããŸãã ãããã®éã§ãããã°ã©ãã³ã°ã¹ã¿ã€ã«ããµããŒãæ§ãªã©ã®èæ ®äºé ã«åºã¥ããŠéžæã§ããŸãã
ããã€ãã®å Žåã«ã©ã ãåŒã䜿çšããŸãã ããã§ãäŸãã°ïŒ
sort(v, [](const string& a, const string& b) { return a>b; }); // sort in reverse order
ã©ã ãåŒã¯æ°ãã匷åãªããŒã«ã§ãã ãã£ããã¯ãããã°ã©ããŒãå°æ¥ãããã©ããªãããç解ãããŸã§ããã®ãããªããšãæåéãã©ãã§ã䜿çšããããšããããšã§ãã ããšãã°ãæ©èœãªããžã§ã¯ããšæ©èœãªããžã§ã¯ããå¥ã ã«å®£èšããæ¹ãè¯ãããã«æããŸãã ç®çã®æäœã«ã¯ç¬èªã®ååãä»ããããããã°ã©ã ã®ããŸããŸãªéšåããç°¡åã«åŒã³åºãããšãã§ããŸãã
ã©ã ãåŒã¯ãã³ãŒãäœæã®ç·Žç¿ã«ãæé©ã§ãã ããã¯ããããC ++ 11ãæããå Žæã§ã¯ãããŸãããã1ã€ã®äŸãæããŸãããã
template<typename C, typename V> vector<Value_type<C>*> find_all(C& cont, V v) // find all occurrences of v in cont { vector<Value_type<C>*> res; for (auto& x : cont) if (x==v) res.push_back(&x); return res; }
ãã®ã³ãŒãã§ã¯ãC ++ã«ããã€ãæ°ããããšãé©çšããŸããã ããšãã°ã
for
ã«ãŒãã¯ãããã§ã¯ãfor all
x
from
cont
ããšèªã¿åãã
cont
ã³ã³ãããŒã®å埩ãç°¡åã«ããŸãã 宣èš
auto& x
ã¯ã
x
ãåæåã³ã³ããã®èŠçŽ ã¿ã€ãããã®å Žåã¯èŠçŽ ã¿ã€ã
cont
ãžã®åç §ã§ããããšã瀺ããŸãã ãã®ã«ãŒãã¯ã
cont
å ã®ãã¹ãŠã®
v
ã¢ãã¬ã¹ãåéãããã€ã³ã¿ãŒãã¯ãã«
res
è¿œå ããŸãã ãããã£ãŠããããã®æ§æäœã¯æ§æç³ã«ãããŸããããéåžžã«äŸ¿å©ã§ãã
éèŠãªé©æ°ã¯
return
ã§ããå€ã«ãã£ãŠãã¯ãã«ãè¿ããããšã«æ³šæããŠãã ããã C ++ 98ã§ã¯ããã®returnã¹ããŒãã¡ã³ãã¯
res
ã³ããŒãäœæããŸãããå®éã«ã¯å€§ãããªããæ°åã®èŠçŽ ã§æ§æãããããšããããŸãã ããã©ãŒãã³ã¹ã«é¢ããŠã¯ãããã¯éåžžã«ç¡è¬ã§ãã ãŸããC ++ 11ã§ã¯ããã¯ã¿ãŒã«ã¯ããããmoveã³ã³ã¹ãã©ã¯ã¿ãŒããã ãããã¯ã³ããŒãã代ããã«ã
find_all()
é¢æ°åŒã³åºãã®å Žæã§äœ¿çšããresè¡šçŸïŒæ¬è³ªçã«ã¯3ã€ã®ãã€ã³ã¿ãŒã®ã¿ïŒãã
find_all()
ããããã¯ã¿ãŒèªäœ
find_all()
空ã®ãŸãŸã§ãã
return
åŸ
return
res
åã³äœ¿çšããããšã¯ã§ããŸããã ãããã£ãŠãå€ã«ãã£ãŠãã¯ãã«ãè¿ãã«ã¯ããã¯ãã«ã®ãµã€ãºã«é¢ä¿ãªããæ倧6ã€ã®å²ãåœãŠãããããŸãã
移åã³ã³ã¹ãã©ã¯ã¿ãŒã¯éåžžã«ã·ã³ãã«ãªããŒã«ã§ãã ãã¹ãŠã®ããã°ã©ããŒãå©çšã§ããããã«ãæšæºã©ã€ãã©ãªã®ãã¹ãŠã®ã³ã³ãããŒã¯ã©ã¹ã«å®è£ ãããŠããŸãã ããã«ãããé¢æ°ãã倧ããªãªããžã§ã¯ããç°¡åã«è¿ãããšãã§ããã¡ã¢ãªç®¡çã§é ãçããããšããªããªããŸãã
次ã®ããã«
find_all()
é¢æ°ã
find_all()
ã§ããŸãã
void test() { string m {"Mary had a little lamb"}; for (const auto p : find_all(m,'a')) // p is a char* if (*p!='a') cerr << "string bug!\n"; vector<string> v {"Maryâ, âlamb", âMaryâ, âmaryâ, âwolfâ}; for (const auto p : find_all(v,âMaryâ)) // p is a string* if (*p!=âMaryâ) cerr << "vector<string> bug!\n"; }
C ++ 11ã®ãã³ãã¬ãŒããšã€ãããŒã·ã§ã³ã䜿çšããã«åãã³ãŒããèšè¿°ããŠãçµæãæ¯èŒããŠã¿ãŠãã ããã
ãã®ãããã¯ã§ãC ++ã®ãã¢ãŒããèªãããšããå§ãããŸãã詳现ã«ã€ããŠã¯ãæ¬ãThe C ++ Programming Languageãã®ç¬¬4çãåç §ããŠãã ããã
çŸä»£ã®ããã°ã©ããŒã¯ãC ++ããã°ã©ããŒã«ã©ããªäžè¬çãªãšã©ãŒãæã£ãŠããŸããïŒ
äœããã®çç±ã§ã圌ãã¯ãã°ãã°ãå¹ççã§ãšã¬ã¬ã³ããªã³ãŒããéžæãã¹ãã ãšèããŠããŸãã ãããã¯ãèšèªã®äœã¬ãã«ã®æ©èœã«å¶éããïŒãå¹çãã®ããïŒãããããããå Žé¢ã§ã巚倧ãªã¢ãŒããã¯ãã£ãæ§ç¯ããŸãïŒãã®ãããªã³ãŒãã¯éåžžã«ãšã¬ã¬ã³ãã§ãããšä¿¡ããŠããŸãïŒã ç§ã®æèŠã§ã¯ãæ倧ã®å¹çãšæé©ãªã¢ãŒããã¯ãã£ãçµã¿åãããããšãçæ³ã§ãã ããã¯ãããã°ã©ããŒã®ãœãªã¥ãŒã·ã§ã³ãæé©ãªæ¹æ³ã§åé¡ã®æ¡ä»¶ãæºãããŠããå Žåã«çºçããŸããããã¡ããããã¯åžžã«å¯èœãšã¯éããŸããã æåã®è©Šè¡ã§ãããéæããããšã¯ãã£ãã«äžå¯èœã§ãããçæ³ãšããŠã¯å¯èœãªéãããã¯éåžžã«é »ç¹ã«çºçããŸãã
ã¯ã©ã¹ããã³ãã¬ãŒããªã©ã®C ++æ©èœãæŸæ£ããåã«ããŸãåºæ¬çãªã¢ããªã±ãŒã·ã§ã³ãšå®è·µãæ€èšããŠãã ããã æ å ±ã«åºã¥ããéžæã¯ãã©ã³ãã ãªã¹ããããããã¯ããã«å ã«é²ã¿ãŸãã 巚倧ãªã¯ã©ã¹éå±€ãæ§ç¯ãããããã³ãã¬ãŒãã䜿çšããŠè€éãªã¡ã¿ã³ãŒããèšè¿°ãããããªãã§ãã ãããC++ã®æã匷åãªæ©èœã®ããã€ãã¯éåžžã«åçŽã§ãã å¹ççãªã³ãŒããèšè¿°ããæè¯ã®æ¹æ³ã¯ãäžå¿ èŠã«è€éã«ããªãããšã§ãã
æãªãšãã«äœãããŸããïŒ
ç§ã¯ããŸããŸãªå Žæãžã®æ è¡ã«èå³ããããŸãã ãžã§ã®ã³ã°ã倧奜ãã§ãã ç§ã¯åçã«ãèå³ããããé³æ¥œãèŽãããèªæžããããããã®ã奜ãã§ãããã£ã¯ã·ã§ã³ãæŽå²æåŠã§ãã 家æãå人ãšæéãéããããã«ããŠããŸãã ãã¡ãããããã°ã©ãã³ã°ã¯ç§ã«æã å€ãã®åã³ãäžããŸããã質åã¯ä»äºã«é¢ãããã®ã§ãã£ãŠã¯ãªããŸããã ç§ã¯ç 究ãããŠãè€éãªãœãããŠã§ã¢ã·ã¹ãã ãæ§ç¯ããã®ã奜ãã§ãã 誰ããèšã£ãããã«ããç§ã圌ããç§ã«ãããæã£ãŠããããªããŠä¿¡ããããªãïŒã
翻蚳è ã¡ã¢
- ãããã°ã©ãã³ã°ã ãŠã£ãªã¢ã ãºåºç瀟ã®Dmitry Klyushinã翻蚳ããC ++ã®äœ¿çšã®ååãšå®è·µã æ»ã
- å ¥åã«ã€ããŠã¯ãããã°ã©ãã³ã°èšèªã§ã®å ¥åã«é¢ããèšäºLikbezãåç §ããŠãã ããã æ»ã
- å€åãããã§ç§ã¯åºç瀟ãããŒã¿ãŒãã®ç¿»èš³ã§ãC ++ã®èšèšãšé²åã-ãC ++ã®èšèšãšé²åããšããæ¬ãæå³ããŸãã æ»ã
- C ++ 11ã¡ã¢ãªã¢ãã«ã®è©³çŽ°ã«ã€ããŠã¯ãã ããã¯ããªãŒããŒã¿æ§é ããåç §ããŠãã ããã åºæ¬ïŒã¡ã¢ãªã¢ãã« ã æ»ã
- C ++ 11ã®ç§»åã»ãã³ãã£ã¯ã¹ã®æŠèŠã¯ãèšäºãC ++ 11ããã³STLã³ã³ãããŒã®ç§»åã»ãã³ãã£ã¯ã¹ãã§èª¬æãããŠããŸãã æ»ã
- äžè¬ã«ãC ++ 11ã®äž»èŠãªé©æ°ïŒäžèšã®ãã®ãå«ãïŒã¯ããã¹ãŠã®C ++éçºè ã䜿çšããå¿ èŠãããèšäºã C ++ 11ã®10ã®æ©èœãã§èª¬æãããŠããŸã ã
- Binom Publishing Houseã®Nikolai Martynovã«ãããã·ã¢èªã®ç¿»èš³ã§ã¯ããã®æ¬ã¯C ++ããã°ã©ãã³ã°èšèªãšåŒã°ããŠããŸãããã²ããçãããç¡é¢ä¿ã®2001幎çã®åãªãªãŒã¹ããèŠã€ãããŸããã§ããã ä»ã®ç¿»èš³ã¯ãŸã£ããèŠã€ãããŸããã§ããã æ»ã