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++ å ·åè¦æ±ï¼ åºåå®¹å¨ (SequenceContainer)
C++ å ·åè¦æ±ï¼ åºåå®¹å¨ (SequenceContainer)
åºåå®¹å¨ (SequenceContainer) æ¯å¨çº¿æ§æåä¸åå¨ç¸åç±»å对象çå®¹å¨ (Container) ã
è¦æ±
以䏿
åµä¸ï¼ç±»å X 满足åºåå®¹å¨ (SequenceContainer)
- ç±»å
Xæ»¡è¶³å®¹å¨ (Container) ï¼ä¸
ç»å®
-
Tï¼ä¸ºXçå ç´ ç±»å -
Aï¼ä¸ºXçåé å¨ç±»åï¼è¥åå¨å为 X::allocator_typeï¼å¦å为 std::allocator<T> -
aï¼ä¸ºXç±»åçå·¦å¼è¡¨è¾¾å¼ -
pï¼aä¸çææå¸¸éè¿ä»£å¨ -
qï¼aä¸çææå¯è§£å¼ç¨å¸¸éè¿ä»£å¨ -
q1ä¸q2ï¼ä¸ºaä¸ç两个ææå¸¸éè¿ä»£å¨ï¼å¹¶ä½¿å¾ [q1, q2) æ¯ææèå´ -
iä¸jï¼ä¸ºéçè¾å ¥è¿ä»£å¨ (LegacyInputIterator) ï¼ä½¿å¾ [i, j) æ¯ææèå´ï¼ä¸åè¿ä»£å¨æä»£è½éå¼è½¬æ¢ævalue_typeç对象 -
ilï¼ä¸º std::initializer_list<value_type> ç±»åç对象 -
nï¼ä¸º X::size_type ç±»åçå¼ -
tï¼ä¸º X::value_type ç±»åç左弿 const å³å¼ -
rvï¼ä¸º X::value_type ç±»åçé const å³å¼ -
Argsï¼æ¨¡æ¿å½¢åå -
argsï¼æ¥ææ¨¡å¼ Arg&& ç彿°å½¢åå
ä¸å表达å¼å¿ 须忳ï¼ä¸å¯¹é¤ std::array ä¹å¤çææé¡ºåºå®¹å¨åå ·æææå®çææï¼
| è¡¨è¾¾å¼ | è¿åç±»å | ææ | 忡件 | 忡件 |
|---|---|---|---|---|
| X(n, t)
X a(n, t) |
æé ä¿æ n 个 t ç坿¬ç容å¨
|
T å¯å¤å¶æå
¥ (CopyInsertable) å° X
|
std::distance(begin(),end()) == n | |
| X(i, j)
X a(i, j) |
æé ä¸èå´ [i,j) éå
ç´ ç¸çç顺åºå®¹å¨
|
T ä» *i å¯å°±ä½æé (EmplaceConstructible) å° X ä¸
(ä»
对 std::vector)è¥åè¿ä»£å¨ä¸æ¯éçååè¿ä»£å¨ (LegacyForwardIterator) ï¼å |
std::distance(begin(),end()) == std::distance(i,j) | |
| X(il) | X(il.begin(), il.end()) | |||
| a = il | X& | å° il æè¡¨ç¤ºçèå´èµå¼å° a ä¸[1]
|
T å¯å¤å¶æå
¥ (CopyInsertable) ä¸å¯å¤å¶èµå¼ (CopyAssignable)
|
a çæ¢åå
ç´ è¢«éæ¯æè¢«èµå¼
|
| a.emplace(p,args) | iterator
|
å¨ p åæå
¥ä»¥ std::forward<Args>(args) æé ç T ç±»åç对象
|
T å¯å¤å¶æå
¥ (CopyInsertable)
(对 std::vector ä¸ std::deque) |
è¿åæåç± args æé å° a ä¸çå
ç´ çè¿ä»£å¨
|
| a.insert(p,t) | iterator
|
å¨ p åæå
¥ t ç坿¬
|
T å¯å¤å¶æå
¥ (CopyInsertable)
(对 std::vector ä¸ std::deque) |
è¿åæåæå
¥å° a ä¸ç t ç坿¬çè¿ä»£å¨
|
| a.insert(p,rv) | iterator
|
å¨ p åæå
¥ rv ç坿¬ï¼å¯è½ç¨ç§»å¨è¯ä¹
|
T å¯ç§»å¨æå
¥ (MoveInsertable)
(对 std::vector ä¸ std::deque) |
è¿åæåæå
¥å° a ä¸ç rv ç坿¬çè¿ä»£å¨
|
| a.insert(p,n,t) | iterator |
æå
¥ n 个 t ç坿¬å° p ä¹å
|
T å¯å¤å¶æå
¥ (CopyInsertable) ä¸å¯å¤å¶èµå¼ (CopyAssignable)
|
è¿åæåæå
¥å° a ä¸çé¦å
ç´ ç坿¬çè¿ä»£å¨ï¼æå½ n==0 æ¶ä¸º p
|
| a.insert(p,i,j) | iterator |
æå
¥ [i, j) ä¸å
ç´ ç坿¬å° p ä¹å
|
T å¯å°±ä½æé (EmplaceConstructible) ä¸ i ä¸ j ä¸å¨ a ä¸
(ä»
对 std::vector)è¥è¿ä»£å¨ä¸æ¯éçååè¿ä»£å¨ (LegacyForwardIterator) ï¼å |
[i,j) ä¸çæ¯ä¸ªè¿ä»£å¨è¢«è§£å¼ç¨ä¸æ¬¡ãè¿åæåæå
¥å° a çé¦å
ç´ ç坿¬çè¿ä»£å¨ï¼æå½ i==j æ¶ä¸º p
|
| a.insert(p, il) | iterator |
a.insert(p,il.begin(),il.end()) | è¿åæåæå
¥å° a ä¸çé¦å
ç´ ç坿¬çè¿ä»£å¨ï¼æè¥ il 为空å为 pã
| |
| a.erase(q) | iterator |
æ¦é¤ q ææåçå
ç´
|
(std::deque, std::vector) T å¯ç§»å¨èµå¼ (MoveAssignable)
|
è¿åæåæ¦é¤åç´§è· q ä¹åçå
ç´ çè¿ä»£å¨ï¼æè¥æ¤ç§å
ç´ ä¸åå¨åè¿å a.end()ã
|
| a.erase(q1,q2) | iterator |
æ¦é¤ [q1,q2) ä¸çå
ç´ |
(std::deque, std::vector) T å¯ç§»å¨èµå¼ (MoveAssignable) |
è¿åæåå¨ä»»ä½æ¦é¤å q2 æ¾æåçå
ç´ çè¿ä»£å¨ï¼æè¥ä¸å卿¤ç§å
ç´ åè¿å a.end()ã
|
| a.clear() | void |
鿝 a 䏿æå
ç´ |
ææå¼ç¨ãæéåè¿ä»£å¨å失æï¼å å«å°¾è¿ä»£å¨ãa.empty() == trueã | |
| a.assign(i,j) | void |
以 [i, j) ç坿¬æ¿æ¢ a ä¸çå
ç´
|
T å¯å°±ä½æé (EmplaceConstructible) ï¼ä¸ iãj ä¸å¨ a ä¸
(std::vector)ï¼è¥ééçååè¿ä»£å¨ (LegacyForwardIterator) ï¼å |
[i,j) ä¸çæ¯ä¸ªè¿ä»£å¨è¢«è§£å¼ç¨ä¸æ¬¡
|
| a.assign(il) | void |
a.assign(il.begin(),il.end()) | ||
| a.assign(n,t) | void
|
ç¨ t ç n ä¸ªå¯æ¬æ¿æ¢ a ä¸çå
ç´
|
T å¯å¤å¶æå
¥ (CopyInsertable) å¹¶å¯å¤å¶èµå¼ (CopyAssignable)
|
|
| 注 | ||||
| ||||
ä¸å表达å¼å¿ 须忳ï¼ä¸å¯¹äºææåç顺åºå®¹å¨æ¥æææå®çææï¼
| è¡¨è¾¾å¼ | è¿åç±»å | ææ | 忡件 | å®¹å¨ |
|---|---|---|---|---|
| a.front() | reference
å¯¹äº const a 为 |
çä»·äº *a.begin() | ï¼å ¨é¨ï¼ | |
| a.back() | reference
å¯¹äº const a 为 |
çä»·äº { auto tmp = a.end(); --tmp; return *tmp; } | std::basic_string std::array std::deque std::list std::vector | |
| a.emplace_front(args) | void
|
åéä¸ä¸ªä»¥ std::forward<Args>(args)... æé ç T
|
T ä» args å¯å°±ä½æé (EmplaceConstructible) å° X ä¸
|
std::deque std::forward_list std::list |
| a.emplace_back(args) | void
|
åéä¸ä¸ªä»¥ std::forward<Args>(args)... æé ç T
|
T ä» args å¯å°±ä½æé (EmplaceConstructible) å° X ä¸
(ä»
std::vector) |
std::deque std::list std::vector |
| a.push_front(t) | void
|
åé t çä¸ä¸ªå¯æ¬
|
T å¯å¤å¶æå
¥ (CopyInsertable) å° X ä¸
|
std::deque std::forward_list std::list |
| a.push_front(rv) | void
|
åé rv çä¸ä¸ªå¯æ¬ï¼å¯è½ç¨ç§»å¨è¯ä¹
|
T å¯ç§»å¨æå
¥ (MoveInsertable) å° X ä¸
|
std::deque std::forward_list std::list |
| a.push_back(t) | void
|
åé t çä¸ä¸ªå¯æ¬
|
T å¯å¤å¶æå
¥ (CopyInsertable) å° X ä¸
|
std::basic_string std::deque std::list std::vector |
| a.push_back(rv) | void
|
åé rv çä¸ä¸ªå¯æ¬ï¼å¯è½ç¨ç§»å¨è¯ä¹
|
T å¯ç§»å¨æå
¥ (MoveInsertable) å° X ä¸
|
std::basic_string std::deque std::list std::vector |
| a.pop_front() | void
|
鿝é¦å ç´ | a.empty() == false | std::deque std::forward_list std::list |
| a.pop_back() | void
|
éæ¯ææ«å ç´ | a.empty() == false | std::basic_string std::deque std::list std::vector |
| a[n] | reference
å¯¹äº const a 为 |
çä»·äº *(n + a.begin()) | std::basic_string std::array std::deque std::vector | |
| a.at(n) | reference
å¯¹äº const a 为 |
çä»·äº *(n + a.begin())ï¼ä½è¥ n>=size() åæåº out_of_range | std::basic_string std::array std::deque std::vector |
å¦å¤ï¼å¯¹äºæ¯ä¸ªé¡ºåºå®¹å¨ï¼æ¥æ¶ä¸¤ä¸ªè¾å
¥è¿ä»£å¨çæé 彿°æ¨¡æ¿åæå彿° insert()ãappend()ãassign()ãreplace() çæ¨¡æ¿éè½½ï¼è¥ç¸åºç模æ¿å®å䏿»¡è¶³éçè¾å
¥è¿ä»£å¨ (LegacyInputIterator) ï¼åå®ä»¬ä¸åä¸éè½½å³è®®ã
æ ååºä¸ç顺åºå®¹å¨
| åå¨å¹¶æä½å符åºå (类模æ¿) | |
| (C++11 èµ·) |
éæçè¿ç»æ°ç» (类模æ¿) |
| 卿çè¿ç»æ°ç» (类模æ¿) | |
| å端éå (类模æ¿) | |
| (C++11 èµ·) |
åé¾è¡¨ (类模æ¿) |
| åé¾è¡¨ (类模æ¿) |
æè¡¡/使ç¨å¤æ³¨
| std::array | å¿«é访é®ä½å ç´ æ°éåºå® |
| std::vector | å¿«é访é®ä½å¤§å¤æ åµå¨æå ¥/å é¤ä½æ |
| std::list std::forward_list |
å¨åºåä¸é¨é«æå°æå ¥/å é¤ |
| std::deque | å¨åºåé¦å°¾é«æå°æå ¥/å é¤ |