[C++] C++20: span

span은 C++20에 μΆ”κ°€λœ μ»¨ν…Œμ΄λ„ˆ 보쑰 νƒ€μž… 쀑 ν•˜λ‚˜λ‹€.
vector, array처럼 μš”μ†Œ 값이 μ—°μ†λœ ν˜•νƒœλ‘œ μ €μž₯λ˜λŠ” κ²½μš°μ—λ§Œ μœ νš¨ν•˜λ‹€.

원본 객체에 λŒ€ν•œ λΆˆλ³€ 참쑰값을 μΌκ΄€λœ ν˜•νƒœλ‘œ 관리할 수 μžˆλ‹€λŠ” 것이 κ°€μž₯ 큰 μž₯점이닀.
원본 μ»¨ν…Œμ΄λ„ˆ νƒ€μž…μ΄ λ‹€λ₯΄λ”라도 ν•˜λ‚˜μ˜ νƒ€μž…μœΌλ‘œ λ°›μ•„μ„œ μ²˜λ¦¬ν•  수 μžˆλ‹€.

μ‚¬μš©λ²•μ€ λŒ€κ°• 이렇닀.

data둜 원본 포인터λ₯Ό λ°›κ³ , ν¬κΈ°κΉŒμ§€ λ°›λŠ”λ‹€.
그러면 λ‚΄λΆ€μ μœΌλ‘œ 포인터뢀터 size μœ„μΉ˜λΌμ§€μ˜ μ˜μ—­μ„ span μ§€μ μœΌλ‘œ μ‚Όμ•„ μ΄ˆκΈ°ν™”ν•˜λŠ” 것이닀.
λ³΅μ‚¬ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ μ£Όμ†Œ μ˜μ—­λ§Œ μ €μž₯ν•˜λŠ” κ²ƒμ΄λΌμ„œ μ„±λŠ₯ λΆ€ν•˜λŠ” λ³„λ‘œ μ—†λ‹€.

κ·Έ μ΄ν›„μ—λŠ” μ»¨ν…Œμ΄λ„ˆ ν˜•νƒœλ₯Ό λ”°λΌμ„œ μ‚¬μš©ν•  수 μžˆλ‹€.
subspan을 μ‚¬μš©ν•˜λ©΄ μΌμ’…μ˜ λ°°μ—΄ μŠ¬λΌμ΄μ‹±μ„ μ‚¬μš©ν•  μˆ˜λ„ 있고

이외에 배열이 ν•  수 μžˆλŠ” λ™μž‘λ“€μ€ λŒ€λΆ€λΆ„ λ©”μ„œλ“œλ‘œ μ œκ³΅λœλ‹€.



μ°Έμ‘°
https://en.cppreference.com/w/cpp/container/span.html