C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- std::begin, std::cbegin
- std::end, std::cend
- std::next
- std::reverse_iterator
- std::rbegin, std::crbegin
- std::indirectly_readable
- std::indirectly_writable
- std::weakly_incrementable
- std::prev
- std::move_iterator
- std::size, std::ssize
- std::empty
- std::data
- std::insert_iterator
- std::rend, std::crend
- std::incrementable
- std::input_or_output_iterator
- std::sentinel_for
- std::sized_sentinel_for, std::disable_sized_sentinel_for
- std::input_iterator
- std::output_iterator
- std::forward_iterator
- std::bidirectional_iterator
- std::random_access_iterator
- std::contiguous_iterator
- std::iterator_traits
- std::input_iterator_tag, std::output_iterator_tag, std::forward_iterator_tag, std::bidirectional_iterator_tag, std::random_access_iterator_tag, std::contiguous_iterator_tag
- std::iterator
- std::incrementable_traits
- std::indirectly_readable_traits
- std::iter_value_t, std::iter_reference_t, std::iter_difference_t, std::iter_rvalue_reference_t, std::iter_common_reference_t
- std::indirect_unary_invocable, std::indirectly_regular_unary_invocable
- std::indirect_unary_predicate
- std::indirect_binary_predicate
- std::indirect_equivalence_relation
- std::indirect_strict_weak_order
- std::indirectly_movable
- std::indirectly_movable_storable
- std::indirectly_copyable
- std::indirectly_copyable_storable
- std::indirectly_swappable
- std::indirectly_comparable
- std::permutable
- std::mergeable
- std::sortable
- std::indirect_result_t
- std::projected
- std::move_sentinel
- std::back_insert_iterator
- std::front_insert_iterator
- std::make_reverse_iterator
- std::make_move_iterator
- std::default_sentinel_t, std::default_sentinel
- std::unreachable_sentinel_t, std::unreachable_sentinel
- std::back_inserter
- std::front_inserter
- std::inserter
- std::istream_iterator
- std::ostream_iterator
- std::istreambuf_iterator
- std::ostreambuf_iterator
- std::advance
- std::distance
- 注é
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå > è¿ä»£å¨åº
è¿ä»£å¨åº
è¿ä»£å¨åºæä¾äºäºç§è¿ä»£å¨çå®ä¹ï¼åæ¶è¿æä¾äºè¿ä»£å¨ç¹å¾ãéé å¨åç¸å ³çå·¥å ·å½æ°ã
è¿ä»£å¨åç±»
è¿ä»£å¨å ±æäº (C++17 å)å (C++17 èµ·)ç§ï¼éçè¾å ¥è¿ä»£å¨ (LegacyInputIterator) ãéçè¾åºè¿ä»£å¨ (LegacyOutputIterator) ãéçååè¿ä»£å¨ (LegacyForwardIterator) ãéçååè¿ä»£å¨ (LegacyBidirectionalIterator) ãéçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) ï¼åéçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator) (C++17 èµ·)ã
è¿ä»£å¨çåç±»ç便®å¹¶ä¸æ¯è¿ä»£å¨çç±»åï¼èæ¯è¿ä»£å¨ææ¯æçæä½ãæ¢å¥è¯è¯´ï¼æä¸ªç±»ååªè¦æ¯æç¸åºçæä½ï¼å°±å¯ä»¥ä½ä¸ºè¿ä»£å¨ä½¿ç¨ãä¾å¦ï¼å®æ´å¯¹è±¡ç±»åæéæ¯æææéçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) è¦æ±çæä½ï¼äºæ¯ä»»ä½éè¦éçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) çå°æ¹é½å¯ä»¥ä½¿ç¨æéã
è¿ä»£å¨çææç±»å«ï¼é¤äºéçè¾åºè¿ä»£å¨ (LegacyOutputIterator) åéçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator) ï¼è½ç»ç»å°å±çº§ä¸ï¼å ¶ä¸æ´å¼ºåçè¿ä»£å¨ç±»å«ï¼å¦éçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) ï¼æ¯æè¾ä¸å¼ºåçç±»å«ï¼ä¾å¦éçè¾å ¥è¿ä»£å¨ (LegacyInputIterator) ï¼çæææä½ãè¥è¿ä»£å¨è½å ¥è¿äºç±»å«ä¹ä¸ä¸äº¦æ»¡è¶³éçè¾åºè¿ä»£å¨ (LegacyOutputIterator) çè¦æ±ï¼åç§°ä¹ä¸ºå¯å è¿ä»£å¨å¹¶ä¸æ¯æè¾å ¥è¿æè¾åºãç§°éå¯åè¿ä»£å¨ä¸ºå¸¸è¿ä»£å¨ã
| è¿ä»£å¨ç±»å« | æå®ä¹æä½ | |||
|---|---|---|---|---|
| éçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) | éçååè¿ä»£å¨ (LegacyBidirectionalIterator) | éçååè¿ä»£å¨ (LegacyForwardIterator) | éçè¾å ¥è¿ä»£å¨ (LegacyInputIterator) |
|
| ||||
| ||||
| ||||
|
ç§°è½å ¥ä¸è¿°ç±»å«ä¹ä¸ä¸æ»¡è¶³éçè¾åºè¿ä»£å¨ (LegacyOutputIterator) è¦æ±çè¿ä»£å¨ä¸ºå¯åè¿ä»£å¨ã | ||||
| éçè¾åºè¿ä»£å¨ (LegacyOutputIterator) |
| |||
|
ç§°è½å ¥ä¸è¿°ç±»å«ä¹ä¸ä¸äº¦æ»¡è¶³éçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator) è¦æ±çè¿ä»£å¨ä¸ºè¿ç»è¿ä»£å¨ã | ||||
| éçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator) |
| |||
注æï¼éçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator) ç±»å«åªå¨ C++17 䏿£å¼è§å®ï¼ä½ std::vector ã std::basic_string ã std::array ï¼å std::valarray çè¿ä»£å¨è¿ææå C æ°ç»ä¸çæéå¨ C++17 åç代ç ä¸é常é½è¢«å¤çæç¬ç«ç±»å«ã
C++20 è¿ä»£å¨æ¦å¿µC++20 å¼å ¥åºäºæ¦å¿µçæ°è¿ä»£å¨ç³»ç»ï¼å®å¼äº C++17 è¿ä»£å¨ãè½ç¶åºç¡åé æ³ä¿æç±»ä¼¼ï¼ä½åç¬çè¿ä»£å¨ç±»å«çè¦æ±æäºåºå«ã
è¿ä»£å¨å ³èç±»å
è¿ä»£å¨å®å¶ç¹
|
(C++20 èµ·) | ||||||||||||||||||||||||||||||||||||||||||
è¿ä»£å¨åè¯
| 为è¿ä»£å¨å项æ§è´¨æä¾ç»ä¸æ¥å£ (类模æ¿) | |
| ç¨äºæç¤ºè¿ä»£å¨ç±»å«ç空类类å (ç±») | |
| (C++17 ä¸å¼ç¨) |
ç¨äºç®åç®åçè¿ä»£å¨çå¿
è¦ç±»åå®ä¹çåºç±» (类模æ¿) |
è¿ä»£å¨éé å¨
| éåºéåçè¿ä»£å¨éé
å¨ (类模æ¿) | |
| (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 çéç¨æ¥å£ã
| å®ä¹äºå¤´æä»¶
<iterator> | |
| å®ä¹äºå½å空é´
std | |
| (C++11)(C++14) |
è¿åæå容卿æ°ç»èµ·å§çè¿ä»£å¨ (彿°æ¨¡æ¿) |
| (C++11)(C++14) |
è¿åæå容卿æ°ç»ç»å°¾çè¿ä»£å¨ (彿°æ¨¡æ¿) |
| (C++14) |
è¿åæåä¸ä¸ªå®¹å¨ææ°ç»çéåè¿ä»£å¨ (彿°æ¨¡æ¿) |
| (C++14) |
è¿å容卿æ°ç»çéåå°¾è¿ä»£å¨ (彿°æ¨¡æ¿) |
| (C++17)(C++20) |
è¿å容卿æ°ç»çå¤§å° (彿°æ¨¡æ¿) |
| (C++17) |
æ£æ¥å®¹å¨æ¯å¦ä¸ºç©º (彿°æ¨¡æ¿) |
| (C++17) |
è·å¾æååºå±æ°ç»çæé (彿°æ¨¡æ¿) |
| å®ä¹äºå¤´æä»¶
<ranges> | |
| å®ä¹äºå½å空é´
std::ranges | |
| (C++20) |
è¿åæåèå´èµ·å§çè¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
| (C++20) |
è¿åæåèå´ç»å°¾çè¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
| (C++20) |
è¿åæåèå´çéåè¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
| (C++20) |
è¿åæåèå´çéåå°¾è¿ä»£å¨ (å®å¶ç¹å¯¹è±¡) |
| (C++20) |
è·å¾è½å¨å¸¸æ°æ¶é´å
计ç®å¤§å°çèå´çå¤§å° (å®å¶ç¹å¯¹è±¡) |
| (C++20) |
æ£æ¥èå´æ¯å¦ä¸ºç©º (å®å¶ç¹å¯¹è±¡) |
| (C++20) |
è·å¾æåè¿ç»èå´çèµ·å§çæé (å®å¶ç¹å¯¹è±¡) |