C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- std::array
- std::vector
- std::map
- std::unordered_map
- std::priority_queue
- std::span
- std::span<T,Extent>::span
- std::span<T,Extent>::operator=
- std::span<T,Extent>::front
- std::span<T,Extent>::back
- std::span<T,Extent>::operator[]
- std::span<T,Extent>::data
- std::span<T,Extent>::begin
- std::span<T,Extent>::end
- std::span<T,Extent>::rbegin
- std::span<T,Extent>::rend
- std::span<T,Extent>::empty
- std::span<T,Extent>::size
- std::span<T,Extent>::size_bytes
- std::span<T,Extent>::first
- std::span<T,Extent>::last
- std::span<T,Extent>::subspan
- std::as_bytes, std::as_writable_bytes
- std::get(std::span)
- std::dynamic_extent
- 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::span
std::span
| å®ä¹äºå¤´æä»¶ <span>
|
||
| template< Â Â class T, |
(C++20 èµ·) | |
ç±»æ¨¡æ¿ span ææè¿°çå¯¹è±¡è½æä»£å¯¹è±¡çç¸æ¥åºåï¼åºåçé¦å
ç´ å¨é¶ä½ç½®ã span è½æ¥æéæé¿åº¦ï¼è¯¥æ
åµä¸åºåä¸çå
ç´ æ°å·²ç¥å¹¶ç¼ç äºç±»åä¸ï¼ææ¥æå¨æé¿åº¦ã
å
¸åå®ç°åªä¿æäºä¸ªæåï¼æå T çæéå大å°ã
模æ¿å½¢å
| T | - | å ç´ ç±»åï¼å¿ é¡»æ¯å®æ´ç±»åä¸éæ½è±¡ç±» |
| Extent | - | åºåä¸çå
ç´ æ°ï¼æè¥å®ä¸ºå¨æå为 std::dynamic_extent
|
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
element_type
|
T
|
value_type
|
std::remove_cv_t<T> |
size_type
|
std::size_t |
difference_type
|
std::ptrdiff_t |
pointer
|
T*
|
const_pointer
|
const T*
|
reference
|
T&
|
const_reference
|
const T&
|
iterator
|
å®ç°å®ä¹çéçéæºè®¿é®è¿ä»£å¨ (LegacyRandomAccessIterator) ã常é表达å¼è¿ä»£å¨ (ConstexprIterator) å
¼éçè¿ç»è¿ä»£å¨ (LegacyContiguousIterator) ï¼å
¶ value_type 为 value_type
|
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
注æï¼è¥ T æ const éå®å iterator 为å¯åè¿ä»£å¨ã
å®¹å¨ (Container) çè¿ä»£å¨ç±»åä¸çææè¦æ±äº¦åºç¨äº span ç iterator ç±»åã
æå常é
| static constexpr std::size_t extent = Extent; |
||
æå彿°
æé span (å ¬å¼æå彿°) | |
èµå¼ span (å ¬å¼æå彿°) | |
è¿ä»£å¨ | |
| è¿åæååºåèµ·å§çè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæååºåæ«å°¾çè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæååºåéåèµ·å§çéåè¿ä»£å¨ (å ¬å¼æå彿°) | |
| è¿åæååºåé快尾çéåè¿ä»£å¨ (å ¬å¼æå彿°) | |
å ç´ è®¿é® | |
| 访é®ç¬¬ä¸ä¸ªå
ç´ (å ¬å¼æå彿°) | |
| è®¿é®æåä¸ä¸ªå
ç´ (å ¬å¼æå彿°) | |
| 访é®åºåçå
ç´ (å ¬å¼æå彿°) | |
| è¿åæåå
ç´ åºåèµ·å§çæé (å ¬å¼æå彿°) | |
è§å¯å¨ | |
| è¿ååºåä¸çå
ç´ æ° (å ¬å¼æå彿°) | |
| è¿å以åè表示çåºåå¤§å° (å ¬å¼æå彿°) | |
| æ£æ¥åºåæ¯å¦ä¸ºç©º (å ¬å¼æå彿°) | |
åè§å¾ | |
| è·å¾ç±åºåé¦ N 个å
ç´ ç»æçåæ®µ (å ¬å¼æå彿°) | |
| è·å¾ç±åºåæ« N 个å
ç´ ç»æçåæ®µ (å ¬å¼æå彿°) | |
| è·å¾å段 (å ¬å¼æå彿°) | |
éæå彿°
è½¬æ¢ span 为对å
¶åºå±åèçè§å¾ (彿°æ¨¡æ¿) |
éæå常é
| (C++20) |
size_t ç±»å常éï¼ææ span æ¥æå¨æé¿åº¦ (常é) |
è¾ å©æ¨¡æ¿
| template<class T, std::size_t Extent> inline constexpr bool ranges::enable_borrowed_range<std::span<T, Extent>> = true; |
||
std::ranges::enable_borrowed_range çæ¤ç¹åä½¿å¾ span 满足 borrowed_range ã
| template<class T, std::size_t Extent> inline constexpr bool ranges::enable_view<std::span<T, Extent>> = |
||
std::ranges::enable_view çæ¤ç¹åä½¿é¶æå¨æé¿åº¦ç span 满足 view ãéé¶éæé¿åº¦ç span é default_initializable ä»è䏿¯è§å¾ã