C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- std::array
- std::array<T,N>::at
- std::array<T,N>::operator[]
- std::array<T,N>::front
- std::array<T,N>::back
- std::array<T,N>::data
- std::array<T,N>::begin, std::array<T,N>::cbegin
- std::array<T,N>::fill
- std::array<T,N>::end, std::array<T,N>::cend
- std::array<T,N>::rbegin, std::array<T,N>::crbegin
- std::array<T,N>::rend, std::array<T,N>::crend
- std::array<T,N>::empty
- std::array<T,N>::size
- std::array<T,N>::max_size
- std::array<T,N>::swap
- std::get(std::array)
- std::swap(std::array)
- std::to_array
- operator==,!=,<,<=,>,>=,<=>(std::array)
- std::tuple_size(std::array)
- std::tuple_element<std::array>
- std::array çæ¨å¯¼æå¼
- std::vector
- std::map
- std::unordered_map
- std::priority_queue
- std::span
- std::forward_list
- std::deque
- std::list
- std::set
- std::multiset
- std::multimap
- std::unordered_set
- std::unordered_multiset
- std::unordered_multimap
- std::stack
- std::queue
- std::vector<bool>
- ç»ç¹ææ (C++17)
- 注é
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >容å¨åº > std::array
std::array
| å®ä¹äºå¤´æä»¶ <array>
|
||
| template< Â Â class T, |
(C++11 èµ·) | |
std::array æ¯å°è£
åºå®å¤§å°æ°ç»ç容å¨ã
æ¤å®¹å¨æ¯ä¸ä¸ªèåç±»åï¼å
¶è¯ä¹çåäºä¿æä¸ä¸ª C 飿 ¼æ°ç» T[N] ä½ä¸ºå
¶å¯ä¸ééææ°æ®æåçç»æä½ãä¸åäº C 飿 ¼æ°ç»ï¼å®ä¸ä¼èªå¨éåæ T* ãå®è½ä½ä¸ºèåç±»åèååå§åï¼åªè¦æè³å¤ N 个è½è½¬æ¢æ T çåå§åå¨ï¼ std::array<int, 3> a = {1,2,3}; ã
è¯¥ç»æä½ç»åäº C 飿 ¼æ°ç»çæ§è½ãå¯è®¿é®æ§ä¸å®¹å¨çä¼ç¹ï¼æ¯å¦å¯è·å大å°ãæ¯æèµå¼ãéæºè®¿é®è¿ä»£å¨çã
std::array æ»¡è¶³å®¹å¨ (Container) åå¯éå®¹å¨ (ReversibleContainer) çè¦æ±ï¼é¤äºé»è®¤æé ç array æ¯é空çï¼ä»¥åè¿è¡äº¤æ¢çå¤æåº¦æ¯çº¿æ§ï¼å®æ»¡è¶³è¿ç»å®¹å¨ (ContiguousContainer) (C++17 èµ·)çè¦æ±å¹¶é¨å满足åºåå®¹å¨ (SequenceContainer) çè¦æ±ã
å½å
¶é¿åº¦ä¸ºé¶æ¶ array ï¼ N == 0 ï¼æç¹æ®æ
åµãæ¤æ¶ï¼ array.begin() == array.end() ï¼å¹¶æ¥ææä¸ªå¯ä¸å¼ãå¨é¶é¿ array ä¸è°ç¨ front() æ back() æ¯æªå®ä¹çã
亦å¯å° array å½åæ¥æ N 个åç±»åå
ç´ çå
ç»ã
è¿ä»£å¨éæ³å
æç
§è§åï¼æå array çè¿ä»£å¨å¨ array ççåæé´å³ä¸éæ³åãç¶èè¦æ³¨æï¼å¨ swap æ¶ï¼è¿ä»£å¨å°ç»§ç»æååä¸ array çå
ç´ ï¼å¹¶å°æ¹åå
ç´ çå¼ã
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
value_type
|
T |
size_type
|
std::size_t |
difference_type
|
std::ptrdiff_t |
reference
|
value_type& |
const_reference
|
const value_type& |
pointer
|
value_type* |
const_pointer
|
const value_type* |
iterator
|
éçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) å ¼å¸¸é表达å¼è¿ä»£å¨ (ConstexprIterator) (C++20 èµ·)ä¸ä¸ºåé¢ç±»å (LiteralType) (C++17 èµ·) |
const_iterator
|
å¸¸éæºè®¿é®è¿ä»£å¨å ¼å¸¸é表达å¼è¿ä»£å¨ (ConstexprIterator) (C++20 èµ·)ä¸ä¸ºåé¢ç±»å (LiteralType) (C++17 èµ·) |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
æå彿°
éå¼å®ä¹çæå彿° | |
| (æé 彿°) (éå¼å£°æ) |
éµå¾ªèååå§åçè§ååå§å array ï¼æ³¨æé»è®¤åå§åå¯ä»¥å¯¼è´éç±»ç T çä¸ç¡®å®å¼ï¼ (å ¬å¼æå彿°) |
| (ææå½æ°) (éå¼å£°æ) |
鿝 array çæ¯ä¸ªå
ç´ (å ¬å¼æå彿°) |
| operator= (éå¼å£°æ) |
以æ¥èªå¦ä¸ array çæ¯ä¸ªå
ç´ éå array ç对åºå
ç´ (å ¬å¼æå彿°) |
å ç´ è®¿é® | |
| è®¿é®æå®çå
ç´ ï¼åæ¶è¿è¡è¶çæ£æ¥ (å ¬å¼æå彿°) | |
| è®¿é®æå®çå
ç´ (å ¬å¼æå彿°) | |
| 访é®ç¬¬ä¸ä¸ªå
ç´ (å ¬å¼æå彿°) | |
| è®¿é®æåä¸ä¸ªå
ç´ (å ¬å¼æå彿°) | |
| è¿åæåå
å䏿°ç»ç¬¬ä¸ä¸ªå
ç´ çæé (å ¬å¼æå彿°) | |
è¿ä»£å¨ | |
| è¿åæå容å¨ç¬¬ä¸ä¸ªå
ç´ çè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæå容å¨å°¾ç«¯çè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæå容卿åå
ç´ çéåè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæåå端çéåè¿ä»£å¨ (å ¬å¼æå彿°) | |
容é | |
| æ£æ¥å®¹å¨æ¯å¦ä¸ºç©º (å ¬å¼æå彿°) | |
| è¿å容纳çå
ç´ æ° (å ¬å¼æå彿°) | |
| è¿åå¯å®¹çº³çæå¤§å
ç´ æ° (å ¬å¼æå彿°) | |
æä½ | |
| 以æå®å¼å¡«å
å®¹å¨ (å ¬å¼æå彿°) | |
| 交æ¢å
容 (å ¬å¼æå彿°) | |
éæå彿°
| (C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20) |
æç
§åå
¸é¡ºåºæ¯è¾ array ä¸çå¼ (彿°æ¨¡æ¿) |
è®¿é® array çä¸ä¸ªå
ç´ (彿°æ¨¡æ¿) | |
| (C++11) |
ç¹å std::swap ç®æ³ (彿°æ¨¡æ¿) |
| (C++20) |
ä»å
建æ°ç»å建 std::array 对象 (彿°æ¨¡æ¿) |
è¾ å©ç±»
è·å¾ array çå¤§å° (类模æ¿ç¹å) | |
è·å¾ array å
ç´ çç±»å (类模æ¿ç¹å) |
æ¨å¯¼æå¼(C++17 èµ·)
示ä¾
#include <string> #include <iterator> #include <iostream> #include <algorithm> #include <array>  int main() { // ç¨èååå§åæé std::array<int, 3> a1{ {1, 2, 3} }; // CWG 1270 éç³åç C++11 ä¸è¦æ±åè±æ¬å· // ï¼ C++11 ä¹åççæ¬å C++14 èµ·ä¸è¦æ±ï¼ std::array<int, 3> a2 = {1, 2, 3}; // = åå³ä¸è¦æ± std::array<std::string, 2> a3 = { std::string("a"), "b" };  // æ¯æå®¹å¨æä½ std::sort(a1.begin(), a1.end()); std::reverse_copy(a2.begin(), a2.end(), std::ostream_iterator<int>(std::cout, " "));  std::cout << '\n';  // æ¯æå¸¦èå´ for å¾ªç¯ for(const auto& s: a3) std::cout << s << ' '; }
è¾åºï¼
3 2 1 a b
åé
| å建 std::array 对象ï¼ä»åæ°æ¨å¯¼åºå
¶å¤§å°åå¯éçå
ç´ ç±»å (彿°æ¨¡æ¿) |