ã¤ãã¬ã¼ã¿ã©ã¤ãã©ãª
ã¤ãã¬ã¼ã¿ã©ã¤ãã©ãªã¯5ç¨®é¡ (C++17æªæº)6ç¨®é¡ (C++17以ä¸)ã®ã¤ãã¬ã¼ã¿ãã¤ãã¬ã¼ã¿ç¹æ§ãã¢ããã¿ãã¦ã¼ãã£ãªãã£é¢æ°ã«å¯¾ããå®ç¾©ãæä¾ãã¾ãã
[ç·¨é] ã¤ãã¬ã¼ã¿ã®ã«ãã´ãª
LegacyInputIterator, LegacyOutputIterator, LegacyForwardIterator, LegacyBidirectionalIterator, LegacyRandomAccessIterator, LegacyContiguousIterator (C++17以ä¸) ã® 5ç¨®é¡ (C++17æªæº)6ç¨®é¡ (C++17以ä¸)ã®ã¤ãã¬ã¼ã¿ãããã¾ãã
ç¹å®ã®åãå®ç¾©ãã代ããã«ãã¤ãã¬ã¼ã¿ã®åã ã®ã«ãã´ãªã¯å®è¡å¯è½ãªæä½ã«ãã£ã¦å®ç¾©ããã¾ãã ã¤ã¾ãå¿ è¦ãªæä½ããµãã¼ãããããããåãã¤ãã¬ã¼ã¿ã¨ãã¦ä½¿ç¨ã§ããã¨ããæå³ã§ãã ä¾ãã°ããã¤ã³ã¿ã¯ LegacyRandomAccessIterator ã®è¦æ±ããæä½ããã¹ã¦ãµãã¼ããã¦ããããã LegacyRandomAccessIterator ãæå¾ ãããããããå ´æã§ãã¤ã³ã¿ã使ç¨ãããã¨ãã§ãã¾ãã
ãã¹ã¦ã®ã¤ãã¬ã¼ã¿ã®ã«ãã´ãª (LegacyOutputIterator ãé¤ã) ã¯é層çã«æ´çã§ãã¾ãã ããå¼·åãªã¤ãã¬ã¼ã¿ã«ãã´ãª (ä¾ãã° LegacyRandomAccessIterator) ã¯ããããå¼·åã§ãªãã«ãã´ãª (ä¾ãã° LegacyInputIterator) ã®æä½ããµãã¼ããã¾ãã ã¤ãã¬ã¼ã¿ããããã®ã«ãã´ãªã®ããããã«åé¡ãããããã« LegacyOutputIterator ã®è¦ä»¶ãæºããå ´åããã®ã¤ãã¬ã¼ã¿ã¯å¯å¤ã¤ãã¬ã¼ã¿ã¨å¼ã°ããå ¥åã¨åºåã®ä¸¡æ¹ããµãã¼ããã¾ãã å¯å¤ã§ãªãã¤ãã¬ã¼ã¿ã¯å®æ°ã¤ãã¬ã¼ã¿ã¨å¼ã°ãã¾ãã
ã¤ãã¬ã¼ã¿ã®ã«ãã´ãª | å®ç¾©ããã¦ããæä½ | ||||
---|---|---|---|---|---|
LegacyContiguousIterator | LegacyRandomAccessIterator | LegacyBidirectionalIterator | LegacyForwardIterator | LegacyInputIterator |
|
| |||||
| |||||
| |||||
| |||||
ä¸è¨ã®ã«ãã´ãªã®ããããã«åé¡ãããããã« LegacyOutputIterator ã®è¦ä»¶ãæºããã¤ãã¬ã¼ã¿ã¯ãå¯å¤ã¤ãã¬ã¼ã¿ã¨å¼ã°ãã¾ãã | |||||
LegacyOutputIterator |
|
ãã¼ã: LegacyContiguousIterator ã«ãã´ãªã¯ C++17 ã§æ£å¼ã«è¦å®ããããã®ã§ããã C++17 以åã®ã³ã¼ãã§ã std::vector, std::basic_string, std::array, std::valarray ã®ã¤ãã¬ã¼ã¿ããã³ C ã®é åã¸ã®ãã¤ã³ã¿ã¯ãã°ãã°å¥ã®ã«ãã´ãªã¨ãã¦æ±ããã¦ãã¾ããã
[ç·¨é] C++20 ã®ã¤ãã¬ã¼ã¿ã³ã³ã»ãã
C++20 ã§ã¯ C++17 ã®ã¤ãã¬ã¼ã¿ã¨ç°ãªãã³ã³ã»ããããã¼ã¹ã¨ããæ°ããã¤ãã¬ã¼ã¿ã®ã·ã¹ãã ãå°å ¥ããã¾ãã åºæ¬çãªåé¡ã¯åãã¾ã¾ã§ãããåå¥ã®ã¤ãã¬ã¼ã¿ã«ãã´ãªã«å¯¾ããè¦ä»¶ã¯è¥å¹²ç°ãªãã¾ãã
åå空é
std ã§å®ç¾© | |
åã * æ¼ç®åãé©ç¨ãããã¨ã«ãã£ã¦éæ¥çã«èªã¿è¾¼ã¿å¯è½ã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
ã¤ãã¬ã¼ã¿ã®åç
§å
ã®ãªãã¸ã§ã¯ãã«å¤ãæ¸ãè¾¼ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
åç½®ã¾ãã¯å¾ç½®ã¤ã³ã¯ãªã¡ã³ãæ¼ç®åã§ semiregular åãã¤ã³ã¯ãªã¡ã³ãã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
weakly_incrementable åã«å¯¾ããã¤ã³ã¯ãªã¡ã³ãæ¼ç®ãçãããç¶æãããã¨ããã³ãã®åã equality_comparable ã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
ãã®åã®ãªãã¸ã§ã¯ããã¤ã³ã¯ãªã¡ã³ãããã³éåç
§ã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
åã input_or_output_iterator åã«å¯¾ããçªå
µã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
å·®ã宿°æéã§è¨ç®ããããã«ã¤ãã¬ã¼ã¿ã¨çªå
µã« - æ¼ç®åãé©ç¨ã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
åãå
¥åã¤ãã¬ã¼ã¿ã§ãããã¤ã¾ããåç
§å
ã®å¤ãèªããã¨ãã§ããåç½®ããã³å¾ç½®ã¤ã³ã¯ãªã¡ã³ããã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
åãæå®ãããå¤åã®ããã®åºåã¤ãã¬ã¼ã¿ã§ãããã¤ã¾ãããã®åã®å¤ãæ¸ãè¾¼ããã¨ãã§ããåç½®ããã³å¾ç½®ã¤ã³ã¯ãªã¡ã³ããã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
input_iterator ãåé²ã¤ãã¬ã¼ã¿ã§ãããç価æ¯è¼ã¨ãã«ããã¹ããµãã¼ããããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
forward_iterator ãåæ¹åã¤ãã¬ã¼ã¿ã§ãããéæ¹åã®ç§»åããµãã¼ããããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
bidirectional_iterator ãã©ã³ãã ã¢ã¯ã»ã¹ã¤ãã¬ã¼ã¿ã§ããã宿°æéã§ã®åé²ããã³æ·»åã¢ã¯ã»ã¹ããµãã¼ããããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
random_access_iterator ã飿¥ã¤ãã¬ã¼ã¿ã§ãããã¡ã¢ãªå
ã§é£æ¥ããè¦ç´ ãåç
§ãã¦ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) |
[ç·¨é] ã¤ãã¬ã¼ã¿ã®é¢é£å
åå空é
std ã§å®ç¾© | |
weakly_incrementable åã®å·®åãè¨ç®ãã¾ã (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
indirectly_readable åã®å¤åãè¨ç®ãã¾ã (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
ã¤ãã¬ã¼ã¿ã®é¢é£åãè¨ç®ãã¾ã (ã¨ã¤ãªã¢ã¹ãã³ãã¬ã¼ã) |
[ç·¨é] ã¤ãã¬ã¼ã¿ããªããã£ã
ã¤ãã¬ã¼ã¿ã®æ§è³ªã¸ã®çµ±ä¸ãããã¤ã³ã¿ãã§ã¼ã¹ãæä¾ãã¾ã (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
ã¤ãã¬ã¼ã¿ã®ã«ãã´ãªã表ãããã«ä½¿ç¨ããã空ã®ã¯ã©ã¹å (ã¯ã©ã¹) | |
(C++17ã§éæ¨å¥¨) |
ã·ã³ãã«ãªã¤ãã¬ã¼ã¿ã®ããã®åè¦ä»¶ã®å®ç¾©ãç°¡åã«ããåºåºã¯ã©ã¹ (ã¯ã©ã¹ãã³ãã¬ã¼ã) |
[ç·¨é] ã¤ãã¬ã¼ã¿ã®ã«ã¹ã¿ãã¤ã¼ã¼ã·ã§ã³ãã¤ã³ã
åå空é
std::ranges ã§å®ç¾© | |
ãªãã¸ã§ã¯ããéåç
§ããçµæããã®é¢é£ããå³è¾ºå¤åç
§åã«ãã£ã¹ããã¾ã (ã«ã¹ã¿ãã¤ã¼ã¼ã·ã§ã³ãã¤ã³ããªãã¸ã§ã¯ã) | |
2ã¤ã®éåç
§å¯è½ãªãã¸ã§ã¯ãã®åç
§å
ã®å¤ãå
¥ãæ¿ãã¾ã (ã«ã¹ã¿ãã¤ã¼ã¼ã·ã§ã³ãã¤ã³ããªãã¸ã§ã¯ã) |
[ç·¨é] ã¢ã«ã´ãªãºã ã®ã³ã³ã»ããã¨ã¦ã¼ãã£ãªãã£
C++20 ã¯å ±éã¢ã«ã´ãªãºã æä½ãç°¡åã«å¶ç´ããããã«è¨è¨ãããã³ã³ã»ããã¨é¢é£ããã¦ã¼ãã£ãªãã£ãã³ãã¬ã¼ãã®ã»ãããæä¾ãã¾ãã
ããã
<iterator> ã§å®ç¾© | |
åå空é
std ã§å®ç¾© | |
鿥å¼ã³åºãå¯è½ã³ã³ã»ãã | |
å¼ã³åºãå¯è½åã indirectly_readable åãéåç
§ããçµæãç¨ãã¦å¼ã¶ãã¨ãã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
å¼ã³åºãå¯è½åã indirectly_readable åãéåç
§ããçµæãç¨ãã¦å¼ã°ããã¨ãã« predicate ãæºãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
å¼ã³åºãå¯è½åã2ã¤ã® indirectly_readable åã®çµæãç¨ãã¦å¼ãã ã¨ãã« predicate ãæºãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
å¼ã³åºãå¯è½åã2ã¤ã® indirectly_readable åã®éåç
§ã®çµæãç¨ãã¦å¼ãã ã¨ãã« equivalence_relation ãæºãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
callable åã2ã¤ã® indirectly_readable ãéåç
§ããçµæãç¨ãã¦å¼ã°ããã¨ãã« strict_weak_order ãæºãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
å ±éã¢ã«ã´ãªãºã è¦ä»¶ | |
(C++20) |
å¤ã indirectly_readable åãã indirectly_writable åã«ã ã¼ãã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) |
(C++20) |
å¤ã indirectly_readable åãã indirectly_writable åã«ã ã¼ãã§ãããã¨ã¨ããã®ã ã¼ããä¸éãªãã¸ã§ã¯ããä»ãã¦è¡ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) |
(C++20) |
å¤ã indirectly_readable åãã indirectly_writable åã«ã³ãã¼ã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) |
(C++20) |
å¤ã indirectly_readable åãã indirectly_writable åã«ã³ãã¼ã§ãããã¨ã¨ããã®ã³ãã¼ãä¸éãªãã¸ã§ã¯ããä»ãã¦è¡ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) |
2ã¤ã® indirectly_readable åã®åç
§å
ã®å¤ãã¹ã¯ããå¯è½ã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
2ã¤ã® indirectly_readable åã®åç
§å
ã®å¤ãæ¯è¼ã§ãããã¨ãæå®ãã¾ã (ã³ã³ã»ãã) | |
ãã®å ´ã§è¦ç´ ãä¸¦ã¹æ¿ããã¢ã«ã´ãªãºã ã®å
±éã®è¦ä»¶ãæå®ãã¾ã (ã³ã³ã»ãã) | |
è¦ç´ ãã³ãã¼ãããã¨ã«ãã£ã¦ã½ã¼ãæ¸ã¿ã·ã¼ã±ã³ã¹ãåºåã·ã¼ã±ã³ã¹ã«ãã¼ã¸ããã¢ã«ã´ãªãºã ã®è¦ä»¶ãæå®ãã¾ã (ã³ã³ã»ãã) | |
ã·ã¼ã±ã³ã¹ãé åºä»ãã·ã¼ã±ã³ã¹ã«ä¸¦ã³æ¿ããã¢ã«ã´ãªãºã ã®å
±éã®è¦ä»¶ãæå®ãã¾ã (ã³ã³ã»ãã) | |
ã¦ã¼ãã£ãªã㣠| |
indirectly_readable åã®ä½ããã®éåãéåç
§ããçµæã«å¯¾ã㦠callable ãªãã¸ã§ã¯ããå¼ã³åºããçµæãè¨ç®ãã¾ã (ã¨ã¤ãªã¢ã¹ãã³ãã¬ã¼ã) | |
å°å½±ãåãåãã¢ã«ã´ãªãºã ã«å¯¾ããå¶ç´ãæå®ããããã®ãã«ãã¼ãã³ãã¬ã¼ã (ã¯ã©ã¹ãã³ãã¬ã¼ã) |
[ç·¨é] ã¤ãã¬ã¼ã¿ã¢ããã¿
éé æ¢ç´¢ã®ããã®ã¤ãã¬ã¼ã¿ã¢ããã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
(C++14) |
弿°ããæ¨å®ããåã® std::reverse_iterator ã使ãã¾ã (颿°ãã³ãã¬ã¼ã) |
(C++11) |
å³è¾ºå¤åç
§ãéåç
§ããã¤ãã¬ã¼ã¿ã¢ããã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) |
(C++20) |
std::move_iterator ã¨å
±ã«ä½¿ç¨ããããã®çªå
µã¢ããã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) |
(C++11) |
弿°ããæ¨å®ããåã® std::move_iterator ã使ãã¾ã (颿°ãã³ãã¬ã¼ã) |
(C++20) |
ã¤ãã¬ã¼ã¿åã¨ãã®çªå
µãå
±éã¤ãã¬ã¼ã¿åã«é©åããã¾ã (ã¯ã©ã¹ãã³ãã¬ã¼ã) |
(C++20) |
ç¯å²ã®å¢çãç¥ã£ã¦ããã¤ãã¬ã¼ã¿ã¨å
±ã«ä½¿ç¨ããããã®ããã©ã«ãã®çªå
µ (ã¯ã©ã¹) |
(C++20) |
ç¯å²ã®çµç«¯ã¾ã§ã®è·é¢ã追跡ããã¤ãã¬ã¼ã¿ã¢ããã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) |
(C++20) |
ãããªã weakly_incrementable åã¨ã常ã«çãããªãã¨æ¯è¼ãããçªå
µ (ã¯ã©ã¹) |
ã³ã³ããã®æ«å°¾ã«æ¿å
¥ããããã®ã¤ãã¬ã¼ã¿ã¢ããã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
弿°ããæ¨å®ããåã® std::back_insert_iterator ã使ãã¾ã (颿°ãã³ãã¬ã¼ã) | |
ã³ã³ããã®å
é ã«æ¿å
¥ããããã®ã¤ãã¬ã¼ã¿ã¢ããã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
弿°ããæ¨å®ããåã® std::front_insert_iterator ã使ãã¾ã (颿°ãã³ãã¬ã¼ã) | |
ã³ã³ããã«æ¿å
¥ããããã®ã¤ãã¬ã¼ã¿ã¢ããã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
弿°ããæ¨å®ããåã® std::insert_iterator ã使ãã¾ã (颿°ãã³ãã¬ã¼ã) |
[ç·¨é] ã¹ããªã¼ã ã¤ãã¬ã¼ã¿
std::basic_istream ããèªã¿è¾¼ãå
¥åã¤ãã¬ã¼ã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
std::basic_ostream ã«æ¸ãè¾¼ãåºåã¤ãã¬ã¼ã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
std::basic_streambuf ããèªã¿è¾¼ãå
¥åã¤ãã¬ã¼ã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) | |
std::basic_streambuf ã«æ¸ãè¾¼ãåºåã¤ãã¬ã¼ã¿ (ã¯ã©ã¹ãã³ãã¬ã¼ã) |
[ç·¨é] ã¤ãã¬ã¼ã¿ã®æä½
ããã
<iterator> ã§å®ç¾© | |
ã¤ãã¬ã¼ã¿ãæå®ãããè·é¢ã ãåé²ããã¾ã (颿°) | |
2ã¤ã®ã¤ãã¬ã¼ã¿éã®è·é¢ãè¿ãã¾ã (颿°) | |
(C++11) |
ã¤ãã¬ã¼ã¿ãã¤ã³ã¯ãªã¡ã³ããã¾ã (颿°) |
(C++11) |
ã¤ãã¬ã¼ã¿ããã¯ãªã¡ã³ããã¾ã (颿°) |
(C++20) |
ã¤ãã¬ã¼ã¿ãæå®ãããè·é¢ã¾ãã¯æå®ãããå¢çã¾ã§åé²ããã¾ã (ãã¼ããã¤ã) |
(C++20) |
ã¤ãã¬ã¼ã¿ã¨çªå
µã®éã¾ãã¯ç¯å²ã®å
é ã¨çµç«¯ã®éã®è·é¢ãè¿ãã¾ã (ãã¼ããã¤ã) |
(C++20) |
ã¤ãã¬ã¼ã¿ãæå®ãããè·é¢ã¾ãã¯å¢çã¾ã§ã¤ã³ã¯ãªã¡ã³ããã¾ã (ãã¼ããã¤ã) |
(C++20) |
ã¤ãã¬ã¼ã¿ãæå®ãããè·é¢ã¾ãã¯å¢çã¾ã§ãã¯ãªã¡ã³ããã¾ã (ãã¼ããã¤ã) |
[ç·¨é] ç¯å²ã¢ã¯ã»ã¹
ãããã®éã¡ã³ã颿°ã¯ã³ã³ãããæ®éã®é åã std::initializer_list ã«å¯¾ããæ±ç¨ã®ã¤ã³ã¿ãã§ã¼ã¹ãæä¾ãã¾ãã
ããã
<array> ã§å®ç¾© | |
ããã
<deque> ã§å®ç¾© | |
ããã
<forward_list> ã§å®ç¾© | |
ããã
<iterator> ã§å®ç¾© | |
ããã
<list> ã§å®ç¾© | |
ããã
<map> ã§å®ç¾© | |
ããã
<regex> ã§å®ç¾© | |
ããã
<set> ã§å®ç¾© | |
ããã
<span> ã§å®ç¾© | |
ããã
<string> ã§å®ç¾© | |
ããã
<string_view> ã§å®ç¾© | |
ããã
<unordered_map> ã§å®ç¾© | |
ããã
<unordered_set> ã§å®ç¾© | |
ããã
<vector> ã§å®ç¾© | |
åå空é
std ã§å®ç¾© | |
(C++11)(C++14) |
ã³ã³ããã¾ãã¯é
åã®å
é ãæãã¤ãã¬ã¼ã¿ãè¿ãã¾ã (颿°) |
(C++11)(C++14) |
ã³ã³ããã¾ãã¯é
åã®çµç«¯ãæãã¤ãã¬ã¼ã¿ãè¿ãã¾ã (颿°) |
(C++14) |
ã³ã³ããã¾ãã¯é
åã®å
é ãæãéã¤ãã¬ã¼ã¿ãè¿ãã¾ã (颿°) |
(C++14) |
ã³ã³ããã¾ãã¯é
åã®çµç«¯ãæãéã¤ãã¬ã¼ã¿ãè¿ãã¾ã (颿°) |
(C++17)(C++20) |
ã³ã³ããã¾ãã¯é
åã®ãµã¤ãºãè¿ãã¾ã (颿°ãã³ãã¬ã¼ã) |
(C++17) |
ã³ã³ããã空ãã©ãã調ã¹ã¾ã (颿°) |
(C++17) |
ãã¼ã¹ã¨ãªãé
åãæããã¤ã³ã¿ãåå¾ãã¾ã (颿°) |