C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- C++ å ·åè¦æ±ï¼ 彿°å¯¹è±¡ (FunctionObject)
- C++ å ·åè¦æ±ï¼ äºå è°è¯ (BinaryPredicate)
- C++ å ·åè¦æ±ï¼ å¯é»è®¤æé (DefaultConstructible)
- C++ å ·åè¦æ±ï¼ å¯å¤å¶èµå¼ (CopyAssignable)
- C++ å ·åè¦æ±ï¼ å¯å¤å¶æé (CopyConstructible)
- C++ å ·åè¦æ±ï¼ å¯ç§»å¨èµå¼ (MoveAssignable) (C++11 èµ·)
- C++ å ·åè¦æ±ï¼ å¯ç§»å¨æé (MoveConstructible) (C++11 èµ·)
- C++ å ·åè¦æ±ï¼ 坿æ (Destructible)
- C++ å ·åè¦æ±ï¼ å¯å¹³å¡å¤å¶ (TriviallyCopyable)
- C++ å ·åè¦æ±ï¼ å¯ç¸çæ¯è¾ (EqualityComparable)
- C++ å ·åè¦æ±ï¼ å¯å°äºæ¯è¾ (LessThanComparable)
- C++ å ·åè¦æ±ï¼ æ¯è¾ (Compare)
- C++ å ·åè¦æ±ï¼ åé¢ç±»å (LiteralType)
- C++ å ·åè¦æ±ï¼ ç®æ§æ°æ®ç±»å (PODType)
- C++ å ·åè¦æ±ï¼ å¹³å¡ç±»å (TrivialType)
- C++ å ·åè¦æ±ï¼ æ åå¸å±ç±»å (StandardLayoutType)
- C++ å ·åè¦æ±ï¼ éçååè¿ä»£å¨ (LegacyForwardIterator)
- C++ å ·åè¦æ±ï¼ å¯äº¤æ¢ (Swappable)
- C++ å ·åè¦æ±ï¼ å¼å¯äº¤æ¢ (ValueSwappable)
- C++ å ·åè¦æ±ï¼ å¯ç©ºæé (NullablePointer) (C++11 èµ·)
- C++ å ·åè¦æ±ï¼ æ£å (Hash)
- C++ å ·åè¦æ±ï¼ åé å¨ (Allocator)
- C++ å ·åè¦æ±ï¼ å¯è°ç¨ (Callable)
- C++ å ·åè¦æ±ï¼ è°è¯ (Predicate)
- C++ å ·åè¦æ±ï¼ å®¹å¨ (Container)
- C++ å ·åè¦æ±ï¼ åºåå®¹å¨ (SequenceContainer)
- C++ å ·åè¦æ±ï¼ è¿ç»å®¹å¨ (ContiguousContainer)
- C++ å ·åè¦æ±ï¼ å¯éå®¹å¨ (ReversibleContainer)
- C++ å ·åè¦æ±ï¼ å ³èå®¹å¨ (AssociativeContainer)
- C++ å ·åè¦æ±ï¼ å ·åé å¨å®¹å¨ (AllocatorAwareContainer)
- C++ å ·åè¦æ±ï¼ æ åºå ³èå®¹å¨ (UnorderedAssociativeContainer)
- C++ å ·åè¦æ±ï¼ å¯é»è®¤æå ¥ (DefaultInsertable)
- C++ å ·åè¦æ±ï¼ å¯å¤å¶æå ¥ (CopyInsertable)
- C++ å ·åè¦æ±ï¼ å¯ç§»å¨æå ¥ (MoveInsertable) (C++11 èµ·)
- C++ å ·åè¦æ±ï¼ å¯å°±ä½æé (EmplaceConstructible) (C++11 èµ·)
- C++ å ·åè¦æ±ï¼ 坿¦é¤ (Erasable)
- C++ å ·åè¦æ±ï¼ éçè¿ä»£å¨ (LegacyIterator)
- C++ å ·åè¦æ±ï¼ éçè¾åºè¿ä»£å¨ (LegacyOutputIterator)
- C++ å ·åè¦æ±ï¼ éçè¾å ¥è¿ä»£å¨ (LegacyInputIterator)
- C++ å ·åè¦æ±ï¼ éçååè¿ä»£å¨ (LegacyBidirectionalIterator)
- C++ å ·åè¦æ±ï¼ éçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator)
- C++ å ·åè¦æ±ï¼ éçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator)
- C++ å ·åè¦æ±ï¼ 常é表达å¼è¿ä»£å¨ (ConstexprIterator)
- C++ å ·åè¦æ±ï¼ ææ ¼å¼è¾å ¥å½æ° (FormattedInputFunction)
- C++ å ·åè¦æ±ï¼ æ æ ¼å¼è¾å ¥å½æ° (UnformattedInputFunction)
- C++ å ·åè¦æ±ï¼ ææ ¼å¼è¾åºå½æ° (FormattedOutputFunction)
- C++ å ·åè¦æ±ï¼ æ æ ¼å¼è¾åºå½æ° (UnformattedOutputFunction)
- C++ å ·åè¦æ±ï¼ ç§ååºå (SeedSequence)
- C++ å ·åè¦æ±ï¼ éæºæ°å¼æ (RandomNumberEngine)
- C++ å ·åè¦æ±ï¼ éæºæ°åå¸ (RandomNumberDistribution)
- C++ å ·åè¦æ±ï¼ ååéæºä½çæå¨ (UniformRandomBitGenerator)
- C++ å ·åè¦æ±ï¼ éæºæ°å¼æéé å¨ (RandomNumberEngineAdaptor)
- C++ å ·åè¦æ±ï¼ åºæ¬å¯éå® (BasicLockable)
- C++ å ·åè¦æ±ï¼ å¯éå® (Lockable)
- C++ å ·åè¦æ±ï¼ å¯å®æ¶éå® (TimedLockable)
- C++ å ·åè¦æ±ï¼ äºæ¥ä½ (Mutex)
- C++ å ·åè¦æ±ï¼ 宿¶äºæ¥ä½ (TimedMutex)
- C++ å ·åè¦æ±ï¼ å ±äº«äºæ¥ä½ (SharedMutex)
- C++ å ·åè¦æ±ï¼ å ±äº«å®æ¶äºæ¥ä½ (SharedTimedMutex)
- C++ å ·åè¦æ±ï¼ å符ç¹å¾ (CharTraits)
- C++ å ·åè¦æ±ï¼ æ£å表达å¼ç¹å¾ (RegexTraits)
- C++ å ·åè¦æ±ï¼ 使©ç ç±»å (BitmaskType)
- C++ å ·åè¦æ±ï¼ æ°å¼ç±»å (NumericType)
- C++ å ·åè¦æ±ï¼ ä¸å ç±»åç¹å¾ (UnaryTypeTrait)
- C++ å ·åè¦æ±ï¼ äºå ç±»åç¹å¾ (BinaryTypeTrait)
- C++ å ·åè¦æ±ï¼ 忢ç¹å¾ (TransformationTrait)
- C++ å ·åè¦æ±ï¼ æ¶é (Clock)
- C++ å ·åè¦æ±ï¼ 平塿¶é (TrivialClock)
- 注é
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >å ·åè¦æ± > C++ å ·åè¦æ±ï¼ éçè¾åºè¿ä»£å¨ (LegacyOutputIterator)
C++ å ·åè¦æ±ï¼ éçè¾åºè¿ä»£å¨ (LegacyOutputIterator)
éçè¾åºè¿ä»£å¨ (LegacyOutputIterator) æ¯è½åå ¥ææåå ç´ çéçè¿ä»£å¨ (LegacyIterator) ã
ä¸ä¸ªå®ç°éçè¾åºè¿ä»£å¨ (LegacyOutputIterator) çç±»åçä¾åæ¯ std::ostream_iteratorã
å½éçååè¿ä»£å¨ (LegacyForwardIterator) ãéçååè¿ä»£å¨ (LegacyBidirectionalIterator) æéçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) å¨èªèº«çè¦æ±ä¹å¤è¿æ»¡è¶³éçè¾åºè¿ä»£å¨ (LegacyOutputIterator) çè¦æ±æ¶ï¼å®å³è¢«æè¿°ä¸ºå¯åçï¼mutableï¼ã
è¦æ±
以䏿
åµä¸ï¼ç±»å X 满足éçè¾åºè¿ä»£å¨ (LegacyOutputIterator)
- ç±»å
X满足éçè¿ä»£å¨ (LegacyIterator) -
Xæ¯ç±»ç±»åææéç±»å
ä¸ï¼ç»å®
-
oï¼æ¯è¾åºè¿ä»£å¨å¯¹åºçå¯åå ¥ç±»åçå¼ï¼å¯ä»¥æå¤ç§å¯åå ¥çç±»åï¼ä¾å¦operator=æ¯æ¨¡æ¿çæ åµã并没æåè¾å ¥è¿ä»£å¨çvalue_typeé£ç§è®°å·ï¼ -
rï¼ä¸ºXç±»åçå·¦å¼ï¼
åä¸å表达å¼å¿ 须忳䏿¥æå ¶æå®çææ
| è¡¨è¾¾å¼ | è¿å | çä»·è¡¨è¾¾å¼ | 忡件 | 忡件 | 注解 |
|---|---|---|---|---|---|
| *r = o | ï¼ä¸ä½¿ç¨ï¼ | r å¯è§£å¼ç¨
|
r å¯èªå¢
|
卿¤æä½åä¸è¦æ± r å¯è§£å¼ç¨ï¼ä¸ä¸åè¦æ±ä»»ä½ r çå
åå¼ç坿¬å¯è§£å¼ç¨æå¯èªå¢ã
| |
| ++r | X& | r å¯èªå¢
|
r ä¸ ++r æä»£åä¸è¿ä»£å¨å¯¹è±¡ï¼r å¯è§£å¼ç¨æä¸ºæ«å°¾åè¿ä»£å¨
|
卿¤æä½åä¸è¦æ± r å¯èªå¢ï¼ä¸ä¸åè¦æ±ä»»ä½ r çå
åå¼ç坿¬å¯è§£å¼ç¨æå¯èªå¢ã
| |
| r++ | å¯è½¬æ¢å° const X& | X temp = r; ++r; |
|||
| *r++ = o | ï¼ä¸ä½¿ç¨ï¼ | *r = o; ++r; |
注解
operator* 对äºè¾åºè¿ä»£å¨çä»
æçåæ³ç¨æ³æ¯å¨èµå¼ç左侧ï¼operator* å¯ä»¥è¿åä¸ä¸ªä»£ç对象ï¼å®å®ä¹äºæå operator=ï¼å¯ä»¥æ¯æ¨¡æ¿ï¼
å¯ä»¥ä¸å¯¹è¾åºè¿ä»£å¨å®ä¹ç¸çåä¸ç¸çãå³ä½¿å®ä¹äº operator==ï¼x == y ä¹ä¸éè¦éå« ++x == ++yã
éè¿è¾åºè¿ä»£å¨çåä¸å¼è¿è¡çèµå¼åªä¼åç䏿¬¡ï¼è¾åºè¿ä»£å¨ä¸çç®æ³å¿ é¡»æ¯åè¶ç®æ³ã
颿éè¿è¾åºè¿ä»£å¨çèµå¼ä¸èªå¢äº¤æ¿è¿è¡ãåéèªå¢æ¯æªå®ä¹è¡ä¸ºï¼C++ æ åå½å声称åéèªå¢å¾å°æ¯æï¼è¿ä¸ STL ææ¡£ç¸åï¼æ¤ä¸º LWG2035ï¼
å
许纯粹ä»
æ¯æè¾åºçè¿ä»£å¨å£°æå
¶ iterator_traits<X>::value_typeãiterator_traits<X>::difference_typeãiterator_traits<X>::pointer ä¸ iterator_traits<X>::reference 为 voidï¼å¦ std::back_insert_iterator è¿æ ·çè¿ä»£å¨æ£å¦æ¤ï¼ã
æ ååº
ä¸åçæ ååºè¿ä»£å¨æ¯è¾åºè¿ä»£å¨èéååè¿ä»£å¨ï¼
- std::ostream_iterator
- std::ostreambuf_iterator
- std::insert_iterator
- std::back_insert_iterator
- std::front_insert_iterator
åé
| æå®ç±»å为ç»å®å¼ç±»åçè¾åºè¿ä»£å¨ï¼å³è½æè¯¥ç±»åçå¼åå
¥å®ï¼ä¸å®è½ååèªå¢ (æ¦å¿µ) |