è¿ä»£å¨åº
è¿ä»£å¨åºæä¾äºäºç§è¿ä»£å¨çå®ä¹ï¼åæ¶è¿æä¾äºè¿ä»£å¨ç¹å¾ãéé å¨åç¸å ³çå·¥å ·å½æ°ã
ç®å½ |
[ç¼è¾] è¿ä»£å¨åç±»
è¿ä»£å¨å ±æäº (C++17 å)å (C++17 èµ·)ç§ï¼èå¼è¾å ¥è¿ä»£å¨ (LegacyInputIterator) ãèå¼è¾åºè¿ä»£å¨ (LegacyOutputIterator) ãèå¼ååè¿ä»£å¨ (LegacyForwardIterator) ãèå¼ååè¿ä»£å¨ (LegacyBidirectionalIterator) ãèå¼éæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) ï¼åèå¼è¿ç»è¿ä»£å¨ (LegacyContiguousIterator) (C++17 èµ·)ã
è¿ä»£å¨çåç±»ç便®å¹¶ä¸æ¯è¿ä»£å¨çç±»åï¼èæ¯è¿ä»£å¨ææ¯æçæä½ãæ¢å¥è¯è¯´ï¼æä¸ªç±»ååªè¦æ¯æç¸åºçæä½ï¼å°±å¯ä»¥ä½ä¸ºè¿ä»£å¨ä½¿ç¨ãä¾å¦ï¼å®æ´å¯¹è±¡ç±»åæéæ¯æææèå¼éæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) è¦æ±çæä½ï¼äºæ¯ä»»ä½éè¦èå¼éæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) çå°æ¹é½å¯ä»¥ä½¿ç¨æéã
è¿ä»£å¨çææç±»å«ï¼é¤äºèå¼è¾åºè¿ä»£å¨ (LegacyOutputIterator) åèå¼è¿ç»è¿ä»£å¨ (LegacyContiguousIterator) ï¼è½ç»ç»å°å±çº§ä¸ï¼å ¶ä¸æ´å¼ºåçè¿ä»£å¨ç±»å«ï¼å¦èå¼éæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) ï¼æ¯æè¾ä¸å¼ºåçç±»å«ï¼ä¾å¦èå¼è¾å ¥è¿ä»£å¨ (LegacyInputIterator) ï¼çæææä½ãè¥è¿ä»£å¨è½å ¥è¿äºç±»å«ä¹ä¸ä¸äº¦æ»¡è¶³èå¼è¾åºè¿ä»£å¨ (LegacyOutputIterator) çè¦æ±ï¼åç§°ä¹ä¸ºå¯å è¿ä»£å¨å¹¶ä¸æ¯æè¾å ¥è¿æè¾åºãç§°éå¯åè¿ä»£å¨ä¸ºå¸¸è¿ä»£å¨ã
è¿ä»£å¨ç±»å« | æå®ä¹æä½ | ||||
---|---|---|---|---|---|
èå¼è¿ç»è¿ä»£å¨ (LegacyContiguousIterator) | èå¼éæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) | èå¼ååè¿ä»£å¨ (LegacyBidirectionalIterator) | èå¼ååè¿ä»£å¨ (LegacyForwardIterator) | èå¼è¾å ¥è¿ä»£å¨ (LegacyInputIterator) |
|
| |||||
| |||||
| |||||
| |||||
ç§°è½å ¥ä¸è¿°è¿ä»£å¨ç±»å«ä¹ä¸å¹¶ä¸äº¦ç¬¦åèå¼è¾åºè¿ä»£å¨ (LegacyOutputIterator) çè¿ä»£å¨ä¸ºå¯åè¿ä»£å¨ã | |||||
èå¼è¾åºè¿ä»£å¨ (LegacyOutputIterator) |
|
注æï¼èå¼è¿ç»è¿ä»£å¨ (LegacyContiguousIterator) ç±»å«åªå¨ C++17 䏿£å¼è§å®ï¼ä½ std::vector ã std::basic_string ã std::array ï¼å std::valarray çè¿ä»£å¨è¿ææå C æ°ç»ä¸çæéå¨ C++17 åç代ç ä¸é常é½è¢«å¤çæç¬ç«ç±»å«ã
[ç¼è¾] C++20 è¿ä»£å¨æ¦å¿µ
C++20 å¼å ¥åºäºæ¦å¿µçæ°è¿ä»£å¨ç³»ç»ï¼å®å¼äº C++17 è¿ä»£å¨ãè½ç¶åºç¡åé æ³ä¿æç±»ä¼¼ï¼ä½åç¬çè¿ä»£å¨ç±»å«çè¦æ±æäºåºå«ã
å®ä¹äºå½å空é´
std | |
(C++20) |
æå®ç±»åéè¿åºç¨è¿ç®ç¬¦ * å¯è¯» (æ¦å¿µ) |
(C++20) |
æå®å¯åè¿ä»£å¨æå¼ç¨ç对象åå
¥å¼ (æ¦å¿µ) |
(C++20) |
æå® semiregular ç±»åè½ä»¥ååèªå¢è¿ç®ç¬¦èªå¢ (æ¦å¿µ) |
(C++20) |
æå® weakly_incrementable ç±»åä¸çèªå¢æä½ä¿æç¸çæ§ï¼èä¸è¯¥ç±»å为 equality_comparable (æ¦å¿µ) |
(C++20) |
æå®è¯¥ç±»å对象å¯ä»¥èªå¢ä¸å¯ä»¥è§£å¼ç¨ (æ¦å¿µ) |
(C++20) |
æå®ç±»å为æä¸ª input_or_output_iterator ç±»åçå¨ä½ç±»å (æ¦å¿µ) |
(C++20) |
æå®å¯å¯¹ä¸ä¸ªè¿ä»£å¨åä¸ä¸ªå¨ä½åºç¨ - è¿ç®ç¬¦ï¼ä»¥å¨å¸¸æ°æ¶é´è®¡ç®å
¶è·ç¦» (æ¦å¿µ) |
(C++20) |
æå®ç±»å为è¾å
¥è¿ä»£å¨ï¼å³å¯è¯»åå
¶æå¼ç¨çå¼ï¼ä¸å¯å/åèªå¢ (æ¦å¿µ) |
(C++20) |
æå®ç±»å为ç»å®çå¼ç±»åçè¾åºè¿ä»£å¨ï¼å³å¯åå
¶åå
¥è¯¥ç±»åçå¼ï¼ä¸å¯å/åèªå¢ (æ¦å¿µ) |
(C++20) |
æå® input_iterator 为ååè¿ä»£å¨ï¼æ¯æç¸çæ¯è¾ä¸å¤è¶æä½ (æ¦å¿µ) |
(C++20) |
æå® forward_iterator 为ååè¿ä»£å¨ï¼æ¯æååç§»å¨ (æ¦å¿µ) |
(C++20) |
æå® bidirectional_iterator ä¸ºéæºè®¿é®è¿ä»£å¨ï¼æ¯æå¸¸æ°æ¶é´å
çåè¿å䏿 è®¿é® (æ¦å¿µ) |
(C++20) |
æå® random_access_iterator 为è¿ç»è¿ä»£å¨ï¼æä»£å
åä¸è¿ç»ç¸æ¥çå
ç´ (æ¦å¿µ) |
[ç¼è¾] è¿ä»£å¨å ³èç±»å
å®ä¹äºå½å空é´
std | |
(C++20) |
è®¡ç® weakly_incrementable ç±»åç差类å (类模æ¿) |
(C++20) |
è®¡ç® indirectly_readable ç±»åçå¼ç±»å (类模æ¿) |
(C++20)(C++20)(C++20)(C++20)(C++20) |
计ç®è¿ä»£å¨çå
³èç±»å (å«å模æ¿) |
[ç¼è¾] è¿ä»£å¨åè¯
为è¿ä»£å¨å项æ§è´¨æä¾ç»ä¸æ¥å£ (类模æ¿) | |
ç¨äºæç¤ºè¿ä»£å¨ç±»å«ç空类类å (ç±») | |
(C++17 ä¸å¼ç¨) |
ç¨äºç®åç®åçè¿ä»£å¨çå¿
è¦ç±»åå®ä¹çåºç±» (类模æ¿) |
[ç¼è¾] è¿ä»£å¨å®å¶ç¹
å®ä¹äºå½å空é´
std::ranges | |
(C++20) |
å°è§£å¼ç¨è¿ä»£å¨çç»æè½¬å为å
¶å
³èçå³å¼å¼ç¨ç±»å (å®å¶ç¹å¯¹è±¡) |
(C++20) |
交æ¢ä¸¤ä¸ªå¯è§£å¼ç¨å¯¹è±¡æå¼ç¨çå¼ (å®å¶ç¹å¯¹è±¡) |
[ç¼è¾] ç®æ³æ¦å¿µä¸å·¥å ·
C++20 亦æä¾ç®å常ç¨ç®æ³æä½ç约æèè®¾è®¡çæ¦å¿µåå·¥å ·æ¨¡æ¿éåã
å®ä¹äºå¤´æä»¶
<iterator> | |
å®ä¹äºå½å空é´
std | |
é´æ¥å¯è°ç¨å¯¹è±¡ | |
æå®å¯è°ç¨ç±»åè½ä»¥è§£å¼ç¨æä¸ª indirectly_readable ç±»åçç»æè¿è¡è°ç¨ (æ¦å¿µ) | |
(C++20) |
æå®å¯è°ç¨ç±»åï¼å¨ä»¥è§£å¼ç¨ä¸ä¸ª indirectly_readable ç±»åçç»æè¿è¡è°ç¨æ¶ï¼æ»¡è¶³ predicate (æ¦å¿µ) |
(C++20) |
æå®å¯è°ç¨ç±»åï¼å¨ä»¥è§£å¼ç¨ä¸¤ä¸ª indirectly_readable ç±»åçç»æè¿è¡è°ç¨æ¶ï¼æ»¡è¶³ predicate (æ¦å¿µ) |
æå®å¯è°ç¨ç±»åï¼å¨ä»¥è§£å¼ç¨ä¸¤ä¸ª indirectly_readable ç±»åçç»æè¿è¡è°ç¨æ¶ï¼æ»¡è¶³ equivalence_relation (æ¦å¿µ) | |
(C++20) |
æå®å¯è°ç¨ç±»åï¼å¨ä»¥è§£å¼ç¨ä¸¤ä¸ª 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 ç±»åï¼ä¸è¯¥å¤å¶å¯ä»¥éè¿ä¸é´å¯¹è±¡è¿è¡ (æ¦å¿µ) |
(C++20) |
æå®è½äº¤æ¢ä¸¤ä¸ª indirectly_readable ç±»åæå¼ç¨çå¼ (æ¦å¿µ) |
(C++20) |
æå®è½æ¯è¾ä¸¤ä¸ª indirectly_readable ç±»åæå¼ç¨çå¼ (æ¦å¿µ) |
(C++20) |
æå®å¨åä½éæå
ç´ çç®æ³çå
±åè¦æ± (æ¦å¿µ) |
(C++20) |
æå®éè¿å¤å¶å
ç´ å°å·²æåºåºåå½å¹¶å°è¾åºåºåä¸çç®æ³çè¦æ± (æ¦å¿µ) |
(C++20) |
æå®éæåºå为æåºåºåçç®æ³çå
±ç¨è¦æ± (æ¦å¿µ) |
å·¥å · | |
(C++20) |
计ç®å¨è§£å¼ç¨æç» indirectly_readable ç±»åçç»æä¸è°ç¨å¯è°ç¨å¯¹è±¡çç»æ (å«å模æ¿) |
(C++20) |
ç¨äºå¯¹æ¥åæå½±çç®æ³æå®çº¦æçè¾
婿¨¡æ¿ (类模æ¿) |
[ç¼è¾] è¿ä»£å¨éé å¨
éåºéåçè¿ä»£å¨éé
å¨ (类模æ¿) | |
(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> | |
令è¿ä»£å¨åè¿ç»å®çè·ç¦» (彿°æ¨¡æ¿) | |
è¿å两个è¿ä»£å¨é´çè·ç¦» (彿°æ¨¡æ¿) | |
(C++11) |
令è¿ä»£å¨èªå¢ (彿°æ¨¡æ¿) |
(C++11) |
令è¿ä»£å¨èªå (彿°æ¨¡æ¿) |
(C++20) |
令è¿ä»£å¨åè¿ç»å®çè·ç¦»æå°ç»å®çè¾¹ç (niebloid) |
(C++20) |
è¿åè¿ä»£å¨ä¸å¨ä½é´çè·ç¦»ï¼æèå´èµ·å§ä¸ç»å°¾é´çè·ç¦» (niebloid) |
(C++20) |
èªå¢è¿ä»£å¨ç»å®çè·ç¦»æå°è¾¹ç (niebloid) |
(C++20) |
èªåè¿ä»£å¨ç»å®çè·ç¦»æå°è¾¹ç (niebloid) |
[ç¼è¾] èå´è®¿é®
è¿äºéæå彿°æä¾å¯¹å®¹å¨ãé常æ°ç»ï¼å 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) |
è·å¾æååºå±æ°ç»çæé (彿°æ¨¡æ¿) |
å®ä¹äºå¤´æä»¶
<ranges> | |
å®ä¹äºå¤´æä»¶
<iterator> | |
å®ä¹äºå½å空é´
std::ranges | |
(C++20) |
è¿åæåèå´èµ·å§çè¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åæååªè¯»èå´èµ·å§çè¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åæç¤ºèå´ç»å°¾çå¨ä½ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åæç¤ºåªè¯»èå´ç»å°¾çå¨ä½ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åæåèå´çéåè¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åæååªè¯»èå´çéåè¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åæåèå´çéåå°¾è¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åæååªè¯»èå´çéåå°¾è¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åçäºèå´å¤§å°çæ´æ° (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è¿åçäºèå´å¤§å°çæç¬¦å·æ´æ° (å®å¶ç¹å¯¹è±¡) |
(C++20) |
æ£æ¥èå´æ¯å¦ä¸ºç©º (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è·å¾æåè¿ç»èå´çèµ·å§çæé (å®å¶ç¹å¯¹è±¡) |
(C++20) |
è·å¾æååªè¯»è¿ç»èå´çèµ·å§çæé (å®å¶ç¹å¯¹è±¡) |