๐Ÿ“š
TIL
  • README
  • Git
    • Basic
    • Remote Repository
    • Log & Diff
    • Rebase&Cherri-Pick
    • git-flow
  • DevOps
    • Monolithic vs MSA
    • Jenkins ์‹œ์ž‘ํ•˜๊ธฐ
    • Airflow ์‹œ์ž‘ํ•˜๊ธฐ
    • Airflow ์‹œ์ž‘ํ•˜๊ธฐ
    • Build Tools
      • maven
  • ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก 
    • TDD
  • Spring
    • IoC
    • Is Spring Bean Thread-Safe?
    • Spring Singleton
    • Component Scan
    • Spring Annotation
    • ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…(DI)
    • Lombok ํ™œ์šฉํ•˜๊ธฐ
    • Bean ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์ฝœ๋ฐฑ
    • Bean Scope
    • AOP(1) - AOP๋ž€
    • AOP(2) - Aop Proxy
    • AOP(3) - Dynamic Proxy
    • AOP(4) - AspectJ
    • POJO
    • Spring ์„œ๋น„์Šค ๊ตฌ์กฐ
    • Transaction
    • JPA๋ž€?
    • JPA Entity
    • Spring Data JPA
    • Spring Data Specification
    • Model Mapping
    • Cache
    • restTemplate
    • YAML ํŒŒ์ผ ์„ค์ •
    • Spring Boot
      • H2 DB ์„ค์ •
      • ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •
      • Mybatis ์—ฐ๋™ํ•˜๊ธฐ
    • Spring Batch
      • Batch ์‹œ์ž‘ํ•ด๋ณด๊ธฐ
      • Batch Job Flow
      • Job
      • Step
      • Batch Scope & Job Parameter
      • JobRepository์™€ ๋ฉ”ํƒ€ํ…Œ์ด๋ธ”
      • Chunk ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ItemReader
      • ItemProcessor
      • ItemWriter
      • Batch Schedular
      • Job๋ณ„ Bean๋“ฑ๋กํ•˜๊ธฐ
      • Batch ๊ตฌํ˜„์‹œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ์ •๋ฆฌ
      • Spring Batch Scaling
        • Multithread Job๊ตฌํ˜„์‹œ ์ด์Šˆ์‚ฌํ•ญ
    • Spring test
      • Junit5
        • ํ…Œ์ŠคํŠธ ์ด๋ฆ„ ํ‘œ๊ธฐ
        • ํ…Œ์ŠคํŠธ ๊ทธ๋ฃน ์‚ฌ์ด์˜ ๊ด€๊ณ„
        • ํƒœ๊ทธ์™€ ํ•„ํ„ฐ๋ง
        • ๋™์  ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ LifeCycle
        • ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ
        • ํ…Œ์ŠคํŠธ ์ˆœ์„œ
        • AssertJ
        • ํ…Œ์ŠคํŠธ ๋ณ‘๋ ฌ ์‹คํ–‰
        • AssertJ
        • Mock
      • Spring Boot Test DB ๋ถ„๋ฆฌ
      • Spring Batch Test
  • Web Application
    • Web Server & WAS
    • ๊ด€๋ จ ๊ฐœ๋… - HTTP API, HTML, CSR, SSR
    • Servlet
    • JSP
    • Cookie And Session
    • ์˜ˆ์™ธํŽ˜์ด์ง€
    • Java Bean
    • JDBC
    • Connection Pool
    • ํŒŒ์ผ ์—…๋กœ๋“œ
    • Expression Language
    • JSTL
    • FrontControllerํŒจํ„ด Command ํŒจํ„ด
    • Forwarding
    • MVC
    • ํšŒ์›๊ฐ€์ž…์˜ˆ์ œ
    • ์ฐธ๊ณ 
      • ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ •
  • Java+
    • SOAP/WSDL vs REST
    • WSDL์„ JAVA๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
    • SOAP ํ†ต์‹  OPEN API๋กœ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ
  • Java
    • Basic
      • ๋ณ€์ˆ˜์™€ ํƒ€์ž…
      • ์—ฐ์‚ฐ์ž
      • ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ
      • ์ฐธ์กฐ ํƒ€์ž…
      • ํด๋ž˜์Šค
      • ์ƒ์†(Inheritance)
      • ์ธํ„ฐํŽ˜์ด์Šค(Interface)
      • ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค
      • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
      • API - Object, System, Class, Math, Wrapper
      • API - String, StringBuffer, StringBuilder
      • Thread
      • Generic
      • Lambda
      • Collection - List, Set
      • Collection - Map
      • Collection - Tree
      • Collection - Stack, Queue
      • Stream
      • Reflection
      • ์ •๊ทœํ‘œํ˜„์‹
      • GUI
      • UML
      • Serializable
    • Advanced
      • OutOfMemoryError
      • AutoValue
      • meta-annotation
        • @Retention
        • @Target
        • @Repeatable
    • Effective Java 3/E
      • ITEM 1: Static Factory Method(์ •์  ๋ฉ”์†Œ๋“œ)
      • ITEM 2: Builder Pattern
      • ITEM 3: Singleton
      • ITEM 4: Private Constructor
      • ITEM 5: Dependency Injection
      • ITEM 6: Avoid Unnecessary Object
      • ITEM 7: Eliminate Object Reference
      • ITEM 8: Avoid finalizer and cleaner
      • ITEM 9: try-with-resources
      • ITEM 10: The gerneral contract when overriding equlas
      • ITEM 11: Overriding hashCode
      • ITEM 12: overriding toString
      • ITEM 13: overriding clone judiciously
      • ITEM 14: Consider implementing comparable
      • ITEM 15: ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•ด๋ผ
      • ITEM 16: Use Accessor methods
      • ITEM 17: ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•ด๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค)
      • ITEM 18: ์ƒ์†๋ณด๋‹จ ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 19: ์ƒ์†์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•ด๋ผ
      • ITEM 20: ์ถ”์ƒ ํด๋ž˜์Šค๋ณด๋‹ค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์šฐ์„ ํ•˜๋ผ
      • ITEM 21: ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜๋Š” ์ชฝ์„ ์ƒ๊ฐํ•ด ์„ค๊ณ„ํ•ด๋ผ.
      • ITEM 22: ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 23: ํƒœ๊ทธ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค๋ณด๋‹ค ํด๋ž˜์Šค ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด๋ผ
      • ITEM 24: ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๋˜๋„๋ก static์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ผ
      • ITEM 25: ํ†ฑ๋ ˆ๋ฒจ ํด๋ž˜์Šค๋Š” ํ•œ ํŒŒ์ผ์— ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•ด๋ผ.
      • ITEM 26: Raw type์€ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ
      • ITEM 27: ๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•ด๋ผ
      • ITEM 28: ๋ฐฐ์—ด๋ณด๋‹ค๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 29: ์ด์™•์ด๋ฉด ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 30: ์ด์™•์ด๋ฉด ์ œ๋„ค๋ฆญ ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 31 : ํ•œ์ •์  ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด API ์œ ์—ฐ์„ฑ์„ ๋†’์—ฌ๋ผ
      • ITEM 32: ์ œ๋„ค๋ฆญ๊ณผ ๊ฐ€๋ณ€์ธ์ˆ˜๋ฅผ ํ•จ๊ป˜ ์“ธ ๋•Œ๋Š” ์‹ ์ค‘ํ•ด๋ผ
      • ITEM 33: ํƒ€์ž… ์•ˆ์ „ ์ด์ข… ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ณ ๋ คํ•ด๋ผ
      • ITEM 34: int ์ƒ์ˆ˜ ๋Œ€์‹  ์—ด๊ฑฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 35: ordinal ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 36: ๋น„ํŠธ ํ•„๋“œ ๋Œ€์‹  EnumSet์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 37: ordinal ์ธ๋ฑ์‹ฑ ๋Œ€์‹  EnumMap์„ ์‚ฌ์šฉํ•ด๋ผ
      • TEM 38 : ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์—ด๊ฑฐํƒ€์ž…์ด ํ•„์š”ํ•˜๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 39: ๋ช…๋ช… ํŒจํ„ด๋ณด๋‹ค ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 40: @Override ์–ด๋…ธํ…Œ์ด์…˜์„ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 41: ์ •์˜ํ•˜๋ ค๋Š” ๊ฒƒ์ด ํƒ€์ž…์ด๋ผ๋ฉด ๋งˆ์ปค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 42: ์ต๋ช… ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 43: ๋žŒ๋‹ค๋ณด๋‹ค๋Š” ๋ฉ”์„œ๋“œ ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 44: ํ‘œ์ค€ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 45: ์ŠคํŠธ๋ฆผ์€ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 46: ์ŠคํŠธ๋ฆผ์—์„œ ๋ถ€์ž‘์šฉ ์—†๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 47: ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ๋Š” ์ŠคํŠธ๋ฆผ๋ณด๋‹ค ์ปฌ๋ ‰์…˜์ด ๋‚ซ๋‹ค.
      • ITEM 48: ์ŠคํŠธ๋ฆผ ๋ณ‘๋ ฌํ™”๋Š” ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 49: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•ด๋ผ
      • ITEM 50: ์ ์‹œ์— ๋ฐฉ์–ด์  ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 51: ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์‹ ์ค‘ํžˆ ์„ค๊ณ„ํ•ด๋ผ
      • ITEM 52: ๋‹ค์ค‘์ •์˜๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 53: ๊ฐ€๋ณ€์ธ์ˆ˜๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 54: null์ด ์•„๋‹Œ, ๋นˆ ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ด๋ผ
      • ITEM 55: Optional ๋ฐ˜ํ™˜์€ ์‹ ์ค‘ํ•˜๊ฒŒ ํ•ด๋ผ
      • ITEM 56: ๊ณต๊ฐœ๋œ API ์š”์†Œ์—๋Š” ํ•ญ์ƒ ์ฃผ์„์„ ์ž‘์„ฑํ•ด๋ผ
      • ITEM 57: ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•ด๋ผ
      • ITEM 58: ์ „ํ†ต์ ์ธ for ๋ฌธ๋ณด๋‹ค๋Š” for-each๋ฌธ์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 59: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตํžˆ๊ณ  ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 60: ์ •ํ™•ํ•œ ๋‹ต์ด ํ•„์š”ํ•˜๋‹ค๋ฉด float์™€ double์€ ํ”ผํ•ด๋ผ
      • ITEM 61: ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…๋ณด๋‹ค๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 62: ๋‹ค๋ฅธ ํƒ€์ž…์ด ์ ์ ˆํ•˜๋‹ค๋ฉด ๋ฌธ์ž์—ด ์‚ฌ์šฉ์„ ํ”ผํ•ด๋ผ
      • ITEM 63: ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ ๋А๋ฆฌ๋‹ˆ ์ฃผ์˜ํ•ด๋ผ
      • ITEM 64: ๊ฐ์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ฐธ์กฐํ•ด๋ผ
      • ITEM 65: ๋ฆฌํ”Œ๋ ‰์…˜๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 66: ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 67: ์ตœ์ ํ™”๋Š” ์‹ ์ค‘ํžˆ ํ•ด๋ผ
      • ITEM 68: ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ๋ผ
    • ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™(SOLID)
    • ๋””์ž์ธํŒจํ„ด
      • Strategy Pattern
      • Template Method Pattern
      • Factory Method Pattern
      • Singleton
      • Delegation
      • Proxy
      • Adapter Pattern
    • ์‹ค์Šต
      • ์ธํ„ฐํŽ˜์ด์Šค ์‹ค์Šต - Vehicle
      • ์ธํ„ฐํŽ˜์ด์Šค ์‹ค์Šต - Remote
      • GUI ์‹ค์Šต - Calculator
      • GUI ์‹ค์Šต - button
      • GUI ์‹ค์Šต - lotto
      • Thread ์‹ค์Šต - ์ขŒ์„์˜ˆ์•ฝ, ๋ฉ”์„ธ์ง€๋ณด๋‚ด๊ธฐ
    • Jar vs War
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • KEY
    • Index
    • Transaction
    • Trigger
    • Procedure / Function
    • Package
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฐ์›€ํ„ฐ
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ
      • ๊ด€๊ณ„๋ฐ์ดํ„ฐ ๋ชจ๋ธ
      • ๊ด€๊ณ„๋Œ€์ˆ˜์™€ SQL
    • MySQL
      • Database๋ž€
      • MySQL ์‹œ์ž‘ํ•˜๊ธฐ
      • MySQL Database
      • MySQL Table
      • CRUD
      • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
      • Server์™€ Client
    • PostgreSQL
    • NoSQL
      • Install Cassandra on mac
      • Cassandra๋ž€?
      • NiFi๋ž€
  • Algorithm
    • String
    • Recursion
    • Dynamic Programming
    • Array, Struct, Pointer
    • Math
    • Sort
    • List
    • Stack
    • Queue
    • Graph
    • Tree
    • Maze
    • AVL
    • ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ(Binary Search Tree)
    • DFS์™€ BFS
    • ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Dijkstra's Algorithm)
    • Red-Black ํŠธ๋ฆฌ
    • A* ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • Heap
    • Huffman Coding
    • Priority Queue
    • Bellman-Ford ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • C++
      • Class
      • STL
        • STL pair
        • STL Container - Associate Container
        • STL Container - Sequence Container
        • STL Container - Container Adapter
  • JavaScript
    • JABASCRIPT BASIC
    • Shallow Copy vs Deep Copy
    • OBJECT MODEL
    • NODE
    • ๋™๊ธฐ ์ฒ˜๋ฆฌ vs ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • AJAX
    • CALLBACK
    • PROMISE
    • DEFERRER
    • UNDERSCORE
    • WEBPACK
    • SCOPE
    • EXECUTION CONTEXT
    • Image Object
    • BFCache๋ž€?
    • history.scrollRestoration
    • Intersection Observer
    • JWT - JSON Web Token
    • HTML vs JSON
  • Vue.js
    • ํ™˜๊ฒฝ์„ค์ •
    • Vue.js๋ž€?
    • Vue Instance
    • Vue Component
    • Vue Router
    • HTTP ํ†ต์‹ 
    • Template
    • Single File Component
    • Vue Animation
    • Vuex
    • Djnago์™€ ์—ฐ๋™ํ•˜๊ธฐ
  • Backbone.js
    • Model
    • Collection
    • Sync
    • view
  • Node.js
    • Doit! - ๋…ธ๋“œ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์„œ๋ฒ„์™€ ์šฉ๋„
    • Doit! - ๋…ธ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๊ฐœ๋ฐœ ๋„๊ตฌ ์„ค์น˜ํ•˜๊ธฐ
    • Doit! - ๋…ธ๋“œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ธฐ
    • Doit! - ๋…ธ๋“œ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ์นœํ•ด์ง€๊ธฐ
    • Doit! - ๋…ธ๋“œ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์•Œ์•„๋ณด๊ธฐ
    • Doit! - ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
    • Doit! - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉํ•˜๊ธฐ
    • Doit! - ์ต์Šคํ”„๋ ˆ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜๊ธฐ
    • Doit! - ๋ทฐ ํ…œํ”Œ๋ฆฟ ์ ์šฉํ•˜๊ธฐ
    • Doit! - ํŒจ์ŠคํฌํŠธ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆํ•˜๊ธฐ
    • Doit! - ์ฑ„ํŒ…์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
    • Doit! - JSON-RPC ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
  • Python
    • Warning-Could not import the lzma module
    • Pandas
      • Pandas ์ž๋ฃŒ๊ตฌ์กฐ
      • Pandas ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ
      • DataFrame Data ์‚ดํŽด๋ณด๊ธฐ
      • ์‹œ๊ฐํ™” ๋„๊ตฌ - Matplotlib
  • ML
    • ์ถ”์ฒœ ์‹œ์Šคํ…œ
      • Collaborative Filtering
      • Matrix Factorization
  • Django
    • Basic
      • ํ™˜๊ฒฝ์„ค์ •
      • About Django
      • Start Django Project
      • Secret Key ๊ด€๋ฆฌํ•˜๊ธฐ
      • Settings ๋ถ„๋ฆฌํ•˜๊ธฐ
      • Django App
      • Django View & URL (1)
      • Django Model
        • MySQL ์—ฐ๋™
      • Django Admin
      • Django View & URL (2)
      • Django Template
      • Django Template & View & URL
      • Django Static
      • Django form
    • Advanced
      • Django Generic View
      • Django Automated Testing
      • Django Extenstion Template
      • Django Model Package
      • Django OpenSSL setting
    • REST framework
      • Rest API
      • Serializers
      • ViewSet
    • Error
      • ํ™˜๊ฒฝ์„ค์ • zlib ์˜ค๋ฅ˜๋ฐœ์ƒ
      • ModuleNotFoundError
    • ํŒจํ‚ค์ง€
      • django-debug-toolbar
    • Vue.js ์—ฐ๋™ํ•˜๊ธฐ
  • Ruby
    • variable & input/output
    • ์กฐ๊ฑด๋ฌธ
    • ๋ฐ˜๋ณต๋ฌธ
    • Array & Hash
    • Method
    • Proc&Lamda
    • Class
  • Ruby on Rails
    • Scaffolding
    • Controller
    • Model
    • Model-M:N relation
    • Model Validation
    • ๋ฉ‹์‚ฌ 10์ฃผ์ฐจ ์ˆ˜์—…(Tip)
  • HTML/CSS
    • Udacity - Intro to HTML/CSS
    • Udacity - Responsive Web Design
    • Udacity - Responsive Images
    • HTML Basic
    • CSS Basic
    • HTML5 Sementic Tag
    • HTML ํ…์ŠคํŠธ ๊ด€๋ จ ํƒœ๊ทธ๋“ค
    • HTML5 ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด
    • HTML ํผ ๊ด€๋ จ ํƒœ๊ทธ๋“ค
    • ํ…์ŠคํŠธ ๊ด€๋ จ ์Šคํƒ€์ผ
    • ์ƒ‰์ƒ๊ณผ ๋ฐฐ๊ฒฝ์„ ์œ„ํ•œ ์Šคํƒ€์ผ
    • ๋ ˆ์ด์•„์›ƒ์„ ์œ„ํ•œ ์Šคํƒ€์ผ
    • CSS ํฌ์ง€์…”๋‹
    • ๋‹ค์žฌ๋‹ค๋Šฅํ•œ CSS3 ์„ ํƒ์ž
    • CSS์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜
    • ๋ฐ˜์‘ํ˜• ์›น์ด๋ž€?
  • OS(์šด์˜์ฒด์ œ)
    • Linux
      • Daemon
      • Cron
      • ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ๋ช…๋ น์–ด
      • ํ…์ŠคํŠธ ํŒŒ์ผ ๋ช…๋ น์–ด
  • Network
    • ๋„คํŠธ์›Œํฌ ๊ธฐ๋ณธ ๊ฐœ๋…
    • ๋„คํŠธ์›Œํฌ ๊ธฐ๋ณธ ๊ทœ์น™
    • ๋ฌผ๋ฆฌ ๊ณ„์ธต
    • ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต
    • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต
    • ์ „์†ก ๊ณ„์ธต
    • ์‘์šฉ ๊ณ„์ธต
    • ๋„คํŠธ์›Œํฌ ์ „์ฒด ํ๋ฆ„
    • ๋ฌด์„  ๋žœ
  • IT ๊ธฐํƒ€์ง€์‹
    • NAS๋ž€
Powered by GitBook
On this page
  • STL Sequence Container
  • vector
  • deque
  • list
  • forward_list
  • ์ฐธ์กฐํŽ˜์ด์ง€

Was this helpful?

  1. Algorithm
  2. C++
  3. STL

STL Container - Sequence Container

STL Container๋Š” ๊ฐ™์€ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ์ผ์ข…์˜ ์ง‘ํ•ฉ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” class template์œผ๋กœ, ์ปจํ…Œ์ด๋„ˆ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จํ•  ์š”์†Œ์˜ ํƒ€์ž…์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๋ณต์‚ฌ ์ƒ์„ฑ๊ณผ ๋Œ€์ž…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์˜ ๊ฐ์ฒด๋งŒ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์š”์†Œ์˜ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ๋„์™€์ฃผ๋Š” ์—ฌ๋Ÿฌ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

STL Sequence Container

๋ฐ์ดํ„ฐ๋ฅผ ์„ ํ˜•์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ํŠน๋ณ„ํ•œ ์ œ์•ฝ์ด๋‚˜ ๊ทœ์น™์ด ์—†๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ์‚ฝ์ž…๋œ ์š”์†Œ์˜ ์ˆœ์„œ๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค.

  1. ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ง์„  ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์–ด์•ผํ•œ๋‹ค.

  2. ๋ฐ˜๋ณต์ž๊ฐ€ ์ตœ์†Œํ•œ ์ˆœ๋ฐฉํ–ฅ ๋ฐ˜๋ณต์ž(forward iterator) ์ด์ƒ์ด์–ด์•ผํ•œ๋‹ค.

  3. ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ์˜ ์š”์†Œ๋“ค์€ ๋ช…ํ™•ํ•œ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ, ํŠน์ • ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.

vector

vector ์ปจํ…Œ์ด๋„ˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜์—ฌ ์‚ฌ์šฉ์ด ์‰ฌ์šฐ๋ฉฐ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. vector๋Š” ์ž„์˜ ์ ‘๊ทผ ๋ฐ˜๋ณต์ž(Random Access Iterator)๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. vector์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ์›์†Œ๊ฐ€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์— ์—ฐ์†ํ•˜๊ฒŒ ์ €์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. vector๋Š” ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ• ๋‹นํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์žฌํ• ๋‹นํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ capacity() ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ํ•œ๋ฒˆ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” reserve() ํ•จ์ˆ˜๋„ ์ œ๊ณต๋œ๋‹ค. ์›์†Œ๊ฐ€ ์—ฐ์†ํ•˜๊ฒŒ ์ €์žฅ๋˜๋ฏ€๋กœ [] ์—ฐ์‚ฐ์ž ๋˜๋Š” at ์œผ๋กœ ์ฝ๊ธฐ์—๋Š” ๋น ๋ฅด์ง€๋งŒ insert(), erase(), push_back() ๋“ฑ์€ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

#include <vector>
vector<T> ๊ฐ์ฒด๋ช…(์ƒ์„ฑ์ž ์ธ์ˆ˜);

์ƒ์„ฑ์ž ์ธ์ˆ˜๋กœ๋Š” ๋ฒกํ„ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉฐ, ์ƒ๋žตํ•˜๋ฉด ์š”์†Œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๋นˆ ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ƒ์„ฑ์ž

์ƒ์„ฑ์ž

์„ค๋ช…

vector v

v๋Š” ๋นˆ ์ปจํ…Œ์ด๋„ˆ

vector v(n)

v๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

vector v(n,x)

v๋Š” x ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

vector v(v2)

v๋Š” v2 ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณต์‚ฌ๋ณธ์ด๋‹ค.(๋ณต์‚ฌ ์ƒ์„ฑ์ž ํ˜ธ์ถœ)

vector v(a,b)

v๋Š” ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)๋กœ ์ดˆ๊ธฐํ™”๋œ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

๋ฉค๋ฒ„ํ•จ์ˆ˜

ํ•จ์ˆ˜

์„ค๋ช…

v.assign(n,x)

v์— x ๊ฐ’์œผ๋กœ n๊ฐœ์˜ ์›์†Œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

v.assign(a,b)

v๋ฅผ ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [a,b)๋กœ ํ• ๋‹น

v.at(i)

v์˜ i๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ฐธ์กฐ

v.front()

v์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

v.back()

v์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ฐธ์กฐ

v.capacity()

v์— ํ• ๋‹น๋œ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ

v.clear()

v์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ œ๊ฑฐ

v.empty()

v๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ์กฐ์‚ฌ

p=v.begin()

p๋Š” v์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

p=v.end()

p๋Š” v์˜ ๋์„ ํ‘œ์‹ํ•˜๋Š” ๋ฐ˜๋ณต์ž

q=v.erase(p)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. q๋Š” ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

q=v.erase(b,e)

๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. q๋Š” ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

q=v.insert(p,x)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— x ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค. q๋Š” ์‚ฝ์ž…ํ•œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค.

v.insert(p,n,x)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— n๊ฐœ์˜ x ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค.

v.insert(p,b,e)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)์˜ ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

x=v.max_size()

x๋Š” v๊ฐ€ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์›์†Œ์˜ ๊ฐœ์ˆ˜(๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ)

v.pop_back()

v์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

v.push_back()

v์˜ ๋์— x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

p=v.rbegin()

p๋Š” v์˜ ์—ญ ์ˆœ์ฐจ์—ด์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค.

p=v.rend()

p๋Š” v์˜ ์—ญ ์ˆœ์ฐจ์—ด์˜ ๋์„ ํ‘œ์‹ํ•˜๋Š” ๋ฐ˜๋ณต์ž

v.reserve(n)

n๊ฐœ์˜ ์›์†Œ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ์˜ˆ์•ฝํ•œ๋‹ค.

v.resize(n)

v์˜ ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ™•์žฅ๋˜๋Š” ๊ณต๊ฐ„์˜ ๊ฐ’์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.

v.resize(n,x)

v์˜ ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ™•์žฅ๋˜๋Š” ๊ณต๊ฐ„์˜ ๊ฐ’์„ x ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

v.size()

v์˜ ์›์†Œ ๊ฐฏ์ˆ˜

v.swap(v2)

v์™€ v2๋ฅผ swapํ•œ๋‹ค.

์˜ˆ์ œ

#include <iostream>
#include <vector>
using namespace std;

int main(){

    vector<int> v;
    vector<int> v2(5);    // 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ 5๊ฐœ์˜ ์›์†Œ
    // ๋ฉ”๋ชจ๋ฆฌํฌ๊ธฐ 8๋งŒํผ ํ• ๋‹น
    v.reserve(8);

    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    v.push_back(50);

    for (vector<int>::size_type i = 0; i < v.size(); ++i)
        cout << v[i] << endl;
    cout << endl;

    // ๋ฒกํ„ฐ์˜ ์›์†Œ ๊ฐฏ์ˆ˜๋ฅผ 10๊ฐœ๋กœ ํ™•์žฅ, ์ถ”๊ฐ€๋œ ๊ณต๊ฐ„์€ ๋””ํดํŠธ 0์œผ๋กœ ์ฑ„์›Œ์ง„๋‹ค.
    v.resize(10);                
}

์—ฌ๊ธฐ์„œ v.size()๋งŒํผ for๋ฌธ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด v.size()์˜ ํƒ€์ž…๊ณผ i ๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

  • vector<int>::size_type : ๋ฒกํ„ฐ์˜ size ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ๊ฐ€์ ธ์˜จ๋‹ค (unsigned int)

deque

๊ตฌ์กฐ

deque<T> ๋ณ€์ˆ˜๋ช…;

์ƒ์„ฑ์ž

์ƒ์„ฑ์ž

deque dq

dq๋Š” ๋นˆ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

deque dq(n)

dq๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

deque dq(n, x)

dq๋Š” x ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

deque dq(dq2)

dq๋Š” dq2 ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณต์‚ฌ๋ณธ์ด๋‹ค

deque dq(b,e)

dq๋Š” ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)๋กœ ์ดˆ๊ธฐํ™”๋œ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

Member Function

๋ฉค๋ฒ„ ํ•จ์ˆ˜

dq.assign(n,x)

dq์— x ๊ฐ’์œผ๋กœ n๊ฐœ์˜ ์›์†Œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

dq.assign(b,e)

dq๋ฅผ ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)๋กœ ํ• ๋‹นํ•œ๋‹ค.

dq.back()

dq์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

p=lt.begin()

p๋Š” dq์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

dq.clear()

dq์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

dq.empty()

dq๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ์กฐ์‚ฌํ•œ๋‹ค.

p=dq.end()

p๋Š” dq์˜ ๋์„ ํ‘œ์‹ํ•˜๋Š” ๋ฐ˜๋ณต์ž๋‹ค

q=dq.erase(p)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. q๋Š” ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

q= dq.erase(b,e)

๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. q๋Š” ๋‹ค์Œ ์›์†Œ๋‹ค

dq.front()

dq์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

q=dq.insert(p,x)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— x ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค. q๋Š” ์‚ฝ์ž…ํ•œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

dq.insert(p,n,x)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— n ๊ฐœ์˜ x ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค.

dq.insert(p,b,e)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)์˜ ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

x=dq.max_size()

x๋Š” dq๊ฐ€ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์›์†Œ์˜ ๊ฐœ์ˆ˜

dq.pop_back()

dq์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

dq.pop_front()

dq์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

dq.push_back(x)

dq์˜ ๋์— x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

dq.push_front(x)

dq์˜ ์•ž์ชฝ์— x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

p=dq.rbegin()

p๋Š” dq์˜ ์—ญ ์ˆœ์ฐจ์—ด์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

p=dq.rend()

p๋Š” dq์˜ ์—ญ ์ˆœ์ฐจ์—ด์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

dq.resize(n)

dq์˜ ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ™•์žฅ๋˜๋Š” ๊ณต๊ฐ„์˜ ๊ฐ’์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

dq.resize(n,x)

dq์˜ ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ™•์žฅ๋˜๋Š” ๊ณต๊ฐ„์˜ ๊ฐ’์„ x ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

dq.size()

dq ์›์†Œ์˜ ๊ฐฏ์ˆ˜๋‹ค

dq.swap(dq2)

dq์™€ dq2๋ฅผ swap ํ•œ๋‹ค.

์˜ˆ์ œ

#include <iostream>
#include <vector>
#include <deque>

using namespace std;

int main(){
    // deque ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”
    deque<int> dq;
    dq.push_back(20);
    dq.push_back(30);
    dq.push_front(10);

    cout << "deque : ";
    copy(dq.begin(), dq.end(), ostream_iterator<int>(cout," "));

    dq.pop_front();
    cout << "deque : ";
    deque<int>::iterator iter;
    for(iter=dq.begin();iter!=dq.end();++iter){
        cout << * iter << ' ';
    }
    cout << endl;
}

list

  • list๋Š” ๋…ธ๋“œ ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ๋กœ at()๊ณผ [] ์—ฐ์‚ฐ์ž๊ฐ€ ์—†์œผ๋ฉฐ ์ž„์˜ ์ ‘๊ทผ ๋ฐ˜๋ณต์ž๊ฐ€ ์•„๋‹Œ ์–‘๋ฐฉํ–ฅ ๋ฐ˜๋ณต์ž(++, --)๋ฅผ ์ œ๊ณต

  • ์ค‘๊ฐ„์— ์›์†Œ๋ฅผ ์‚ฝ์ž…(insert), ์ œ๊ฑฐ(erase) ํ•˜๋”๋ผ๋„ ์ƒ์ˆ˜ ์‹œ๊ฐ„ ๋ณต์žก๋„(O(n))์˜ ์ˆ˜ํ–‰ ์„ฑ๋Šฅ

๊ตฌ์กฐ

template < class T, class Allocator = allocator<T> > class list;
list<int> intList;
list<string> stringList;

์ƒ์„ฑ์ž

์ƒ์„ฑ์ž

list lt

lt๋Š” ๋นˆ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

list lt(n)

lt๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

list lt(n, x)

lt๋Š” x ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

list lt(lt2)

lt๋Š” lt2 ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณต์‚ฌ๋ณธ์ด๋‹ค

list lt(b,e)

lt๋Š” ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)๋กœ ์ดˆ๊ธฐํ™”๋œ ์›์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

Member Function

๋ฉค๋ฒ„ ํ•จ์ˆ˜

lt.assign(n,x)

lt์— x ๊ฐ’์œผ๋กœ n๊ฐœ์˜ ์›์†Œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

lt.assign(b,e)

lt๋ฅผ ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)๋กœ ํ• ๋‹นํ•œ๋‹ค.

lt.back()

lt์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

p=lt.begin()

p๋Š” lt์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

lt.clear()

lt์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

lt.empty()

lt๊ฐ€ ๋น„์—ˆ๋Š”์ง€ ์กฐ์‚ฌํ•œ๋‹ค.

p=lt.end()

p๋Š” lt์˜ ๋์„ ํ‘œ์‹ํ•˜๋Š” ๋ฐ˜๋ณต์ž๋‹ค

q=lt.erase(p)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. q๋Š” ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

q= lt.erase(b,e)

๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. q๋Š” ๋‹ค์Œ ์›์†Œ๋‹ค

lt.front()

lt์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

q=lt.insert(p,x)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— x ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค. q๋Š” ์‚ฝ์ž…ํ•œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

lt.insert(p,n,x)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— n ๊ฐœ์˜ x ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค.

lt.insert(p,b,e)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)์˜ ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

x=lt.max_size()

x๋Š” lt๊ฐ€ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์›์†Œ์˜ ๊ฐœ์ˆ˜

lt.merge(lt2)

lt2๋ฅผ lt๋กœ ํ•ฉ๋ณ‘ ์ •๋ ฌํ•œ๋‹ค.

lt.merge(lt2, pred)

lt2๋ฅผ lt๋กœ ํ•ฉ๋ณ‘ ์ •๋ ฌํ•œ๋‹ค. pred(์กฐ๊ฑด์ž)๋ฅผ ๊ฐ€์ง€๋ˆ„์œผ๋กœ ํ•ฉ๋ณ‘ํ•œ๋‹ค.

lt.pop_back()

lt์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

lt.pop_front()

lt์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

lt.push_back(x)

lt์˜ ๋์— x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

lt.push_front(x)

lt์˜ ์•ž์ชฝ์— x๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

p=lt.rbegin()

p๋Š” lt์˜ ์—ญ ์ˆœ์ฐจ์—ด์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

lt.remove(x)

x ์›์†Œ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•œ๋‹ค.

lt.remove_if(pred)

pred(๋‹จํ•ญ ์กฐ๊ฑด์ž)๊ฐ€ '์ฐธ'์ธ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

p=lt.rend()

p๋Š” lt์˜ ์—ญ ์ˆœ์ฐจ์—ด์˜ ์ฒซ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž๋‹ค

lt.resize(n)

lt์˜ ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ™•์žฅ๋˜๋Š” ๊ณต๊ฐ„์˜ ๊ฐ’์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

lt.reverse()

lt ์ˆœ์ฐจ์—ด์„ ๋’ค์ง‘๋Š”๋‹ค.

lt.size()

lt ์›์†Œ์˜ ๊ฐฏ์ˆ˜๋‹ค

lt.sort()

lt์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์˜ค๋ฆ„ ์ฐจ์ˆœ ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

lt.sort(pred)

lt์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ pred(์กฐ๊ฑด์ž)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

lt.splice(p, lt2)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— lt2์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ž˜๋ผ ๋ถ™์ธ๋‹ค.

lt.splice(p, lt2, q)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— lt2์˜ q๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์›์†Œ๋ฅผ ์ž˜๋ผ ๋ถ™์ธ๋‹ค.

lt.splice(p, lt2, b, e)

p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— lt2์˜ ์ˆœ์ฐจ์—ด [b,e)๋ฅผ ์ž˜๋ผ ๋ถ™์ธ๋‹ค.

lt.swap(lt2)

lt์™€ lt2๋ฅผ swap ํ•œ๋‹ค.

lt.unique()

์ธ์ ‘ํ•œ ์›์†Œ์˜ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์œ ์ผํ•œ ์›์†Œ์˜ ์ˆœ์ฐจ์—ด๋กœ ๋งŒ๋“ ๋‹ค.

lt.unique(pred)

์ธ์ ‘ํ•œ ์›์†Œ๊ฐ€ pred(์ดํ•ญ ์กฐ๊ฑด์ž)์˜ ๊ธฐ์ค€์— ๋งž๋‹ค๋ฉด ์œ ์ผํ•œ ์›์†Œ์˜ ์ˆœ์ฐจ์—ด๋กœ ๋งŒ๋“ ๋‹ค

์˜ˆ์ œ

#include <iostream>
#include <list>
using namespace std;

int main(){

    list<int> list1;

    list1.push_back(10);
    list1.push_back(20);
    list1.push_back(30);
    list1.push_back(40);
    list1.push_back(50);

    list<int>::iterator iter;
    for (iter = list1.begin(); iter != list1.end(); ++iter){
        cout << *iter << ' ';
    }
    cout << endl;
  // 10 20 30 40 50

    // erase ์‚ญ์ œ
      iter = list1.begin();
    iter++;
    iter++;

    list<int>::iterator iter2 = list1.erase(iter);
    for (iter = list1.begin(); iter != list1.end(); ++iter){
        cout << *iter << ' ';
    }
    cout << endl;
      // 10 20 40 50


    cout << "iter2 : " << *iter2 << endl;
      // iter2 : 40

    list1.push_back(10);
    list1.push_back(10);

    for (iter = list1.begin(); iter != list1.end(); ++iter){
        cout << *iter << ' ';
    }
    cout << endl;
       // 10 20 40 50 10 10

    // ๋ฆฌ์ŠคํŠธ์—์„œ ์›์†Œ 10 ์ œ๊ฑฐ
    list1.remove(10);

    for (iter = list1.begin(); iter != list1.end(); ++iter){
        cout << *iter << ' ';
    }
    cout << endl;
      // 20 40 50

    return 0;
}

forward_list

  • <forward_list> ํ—ค๋”์— ์กด์žฌํ•œ๋‹ค.

  • ๋‹จ์ˆœ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“  sequence container

  • ๋‹จ๋ฐฉํ–ฅ๋ฆฌ์ŠคํŠธ๋กœ๋งŒ ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ(ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค.)

  • std::list ๋ณด๋‹ค ์‚ฝ์ž…/์‚ญ์ œ ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์ ๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.(์ฐจ์ด๋Š” ํฌ์ง€ ์•Š๋‹ค.)

๊ตฌ์กฐ

template< class T, class Allocator = std::allocator<T> > class forward_list;
forward_list<int> singleList;

ํŠน์ง•

  1. ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด forward_list๋Š” ๊ธฐ์กด์˜ list์˜ ์„ค๊ณ„์— ๋งž์ถ˜๋‹ค.

  2. std::list์˜ insert์™€ erase๋ฅผ forward_list์—์„œ ๊ตฌํ˜„์ด ๋ณต์žกํ•ด์ง€๊ณ  ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ์ข‹์ง€ ์•Š์•„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

  3. ๋‹ค๋ฅธ STL์˜ container์— ์žˆ๋Š” size ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด์œ ๋Š” ์š”์†Œ ์ˆ˜๋ฅผ ๋ณด์กดํ•˜๋Š” ๋ฉค๋ฒ„๋ฅผ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด C์–ธ์–ด์—์„œ ๊ตฌํ˜„ํ•œ ๊ฒƒ๊ณผ ๋น„๊ตํ•ด์„œ ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋งŒ์•ฝ ์ด๋Ÿฐ ๋ฉค๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด์„œ size ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜๋ฉด ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ์š”์†Œ๋ฅผ ์„ธ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณ„์‚ฐ๋Ÿ‰์ด O(N)์ด ๋œ๋‹ค.

๋ฉค๋ฒ„ ๋ณ€์ˆ˜

Member types

Member type

Definition

value_type

T

allocator_type

ํ• ๋‹น์ž

size_type

๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜(unsigned int) ํƒ€์ž… (์ผ๋ฐ˜์ ์œผ๋กœ std::size_t)

difference_type

๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜(signed int) ํƒ€์ž… (๋ณดํ†ต std::ptrdiff_t)

reference

value_type&

const_reference

const value_type&

pointer

std::allocator_traits<Allocator>::pointer

const_pointer

std::allocator_traits<Allocator>::const_pointer

iterator

ForwardIterator

const_iterator

์ƒ์ˆ˜(constant) ์–‘๋ฐฉํ–ฅ ๋ฐ˜๋ณต์ž(iterator)

Member Function

Member Function

์„ค๋ช…

assign

์ปจํ…Œ์ด๋„ˆ์— ๊ฐ’์„ ํ• ๋‹น

befor_begin cbefore_begin

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์š”์†Œ์— ๋ฐ˜๋ณต์ž(iterator)๋ฅผ ๋ฐ˜ํ™˜

begin cbegin

์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ๋ฐ˜๋ณต์ž(iterator)๋ฅผ ๋ฐ˜ํ™˜

end cend

๋งˆ์ง€๋ง‰ ์›์†Œ๋กœ์˜ ๋ฐ˜๋ณต์ž(iterator) ๋ฐ˜ํ™˜

empty

ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ

max_size

์›์†Œ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

clear

๋ชจ๋‘ ์‚ญ์ œ

resize

์‚ฌ์ด์ฆˆ ๋ณ€๊ฒฝ

insert_after

์‚ฝ์ž…

erase_after

์‚ญ์ œ

push_front

์ƒˆ๋กœ์šด ์›์†Œ๋ฅผ ์•ž์— ์‚ฝ์ž…

pop_front

์ฒซ๋ฒˆ์งธ ์›์†Œ ์‚ญ์ œ

swap

์›์†Œ๋“ค์„ ์„œ๋กœ ๊ตํ™˜

remove remove_if

์กฐ๊ฑด์‚ญ์ œ

unique

์ค‘๋ณต์š”์†Œ ์‚ญ์ œ

reverse

์ „ํ™˜(์—ญ์œผ๋กœ ๋ฐ”๊ฟˆ)

merge

๋ณ‘ํ•ฉ

sort

์ •๋ ฌ

splice_after

ํ•ด๋‹น ์š”์†Œ๋ฅผ ์›๋ณธ ์ˆœ๋ฐฉํ–ฅ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œํ•˜๊ณ , ๋Œ€์ƒ ์ˆœ๋ฐฉํ–ฅ ๋ฆฌ์ŠคํŠธ์˜ ์ง€์ •๋œ ์œ„์น˜์— ์‚ฝ์ž…

์˜ˆ์‹œ

#include <iostream>
#include <forward_list>

using namespace std;

int main(){
  // forward_list ๊ฐ์ฒด์˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”
    forward_list<int> singleList = {10, 20, 400, 30}; 
    forward_list<int> singleList2 = {40, 50};
    forward_list<int>::iterator itr;
    // ๊ฐ’์ด 400์ธ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์‚ญ์ œํ•จ.
    singleList.remove(400);              

  // singleList ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ฐ˜๋ณต์ž๋ฅผ ์ดˆ๊ธฐํ™”
    itr = singleList.begin();            

  //singleList2 ๋ชจ๋“  ์š”์†Œ๋ฅผ singleList ์ฒซ ๋ฒˆ์งธ ์š”์†Œ ๋‹ค์Œ์— ์‚ฝ์ž…
    singleList.splice_after(itr, singleList2); 

}

์ฐธ์กฐํŽ˜์ด์ง€

PreviousSTL Container - Associate ContainerNextSTL Container - Container Adapter

Last updated 4 years ago

Was this helpful?

๋Š” double-ended queue๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์–‘๋ฐฉํ–ฅ ํ์ด๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ ์–‘ ๋์—์„œ ๋น ๋ฅด๊ฒŒ ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

STL List๋Š” , forward_list๋Š” ์™€ ๊ฐ™๋‹ค.

depue
double linked list
single linked list
๊ฐœ๋ฐœ์ดํ•˜๊ณ ์‹ถ์–ด์š”
TCPSCHOOL.com
https://shaeod.tistory.com/469
https://ko.cppreference.com/w/cpp/container/forward_list