Skip to content

Latest commit

Β 

History

History
98 lines (82 loc) Β· 4.47 KB

File metadata and controls

98 lines (82 loc) Β· 4.47 KB

cc

  • C μ–Έμ–΄λ‘œ μž‘μ„±λœ λ²”μš© κ²½λŸ‰ μ»¨ν…Œμ΄λ„ˆ 라이브러리.
  • C++의 STL의 μ»¨ν…Œμ΄λ„ˆ κΈ°λŠ₯을 μ†Œν˜• MCUμ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ œμž‘.
  • (λ―Έμ…˜ 크리티컬 μ‹œμŠ€ν…œ μ œμ•½ 사항을 μ μš©ν•˜κΈ° μœ„ν•΄) 동적 HEAP λ©”λͺ¨λ¦¬ μ‚¬μš©μ΄ μ—†μŒ.

μ»¨ν…Œμ΄λ„ˆ

  • λΉ„μΉ¨μž…ν˜• μ»¨ν…Œμ΄λ„ˆ.
  • μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€ μš”μ†Œ λ²„νΌλŠ” μ»¨ν…Œμ΄λ„ˆ 생성 μ‹œ 제곡 해야함.
    • μš”μ†Œ λ²„νΌμ˜ κ°―μˆ˜κ°€ μ»¨ν…Œμ΄λ„ˆμ˜ μ΅œλŒ€ μš©λŸ‰μ„ κ²°μ •.
    • μš”μ†Œ λ²„νΌλŠ” μ‚¬μš©μžκ°€ μ€€λΉ„ν•΄μ•Ό 함.
  • λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλŠ” μš”μ†Œ ν¬μΈν„°λ§Œ μ €μž₯.
  • μš”μ†Œμ˜ 데이터 λ©”λͺ¨λ¦¬λŠ” μ™ΈλΆ€μ—μ„œ ν• λ‹Ή/ν•΄μ œ(λ©”λͺ¨λ¦¬ ν• λ‹Ή/ν•΄μ œλŠ” 호좜자 μ±…μž„).
  • μš”μ†Œμ˜ 데이터 λ©”λͺ¨λ¦¬λŠ” Simple Segregated Storage 톡해 κ³ μ • λ©”λͺ¨λ¦¬ 풀을 μ΄μš©ν•˜μ—¬ μ‚¬μš©.
  • λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 기본적으둜 μŠ€λ ˆλ“œ μ•ˆμ „ν•˜μ§€ μ•ŠμŒ.
    • RTOS μ‚¬μš©μ‹œ νƒœμŠ€ν¬κ°„μ€ 잠금기λŠ₯을 μˆ˜ν–‰ ν•΄μ•Ό 함.

cc_vector

  • 인덱슀 기반의 순차 μ»¨ν…Œμ΄λ„ˆ.
  • μš”μ†Œλ₯Ό 뒀에 μΆ”κ°€ν•˜κ±°λ‚˜ μž„μ˜ μœ„μΉ˜μ— μ‚½μž…/μ‚­μ œ κ°€λŠ₯.
  • μ‚½μž… μ‹œ μƒˆ μš”μ†ŒλŠ” μ§€μ •ν•œ μΈλ±μŠ€μ— μ‚½μž…λ¨(insert-before semantics).
  • μš”μ†Œ 버퍼: cc_element_t

cc_deque

  • double-ended queue(μ–‘λ°©ν–₯ 큐).
  • μ•ž/λ’€μ—μ„œμ˜ μ‚½μž…κ³Ό 제거 지원.
  • push 계열은 μš©λŸ‰ 초과 μ‹œ false λ°˜ν™˜.
  • pop 계열은 λΉ„μ–΄μžˆμœΌλ©΄ NULL λ°˜ν™˜.
  • μš”μ†Œ 버퍼: cc_element_t

cc_queue

  • FIFO 큐.
  • λ‚΄λΆ€μ μœΌλ‘œ cc_dequeλ₯Ό μž¬μ‚¬μš©ν•œ 얇은 래퍼.
  • cc_deque의 push_back/pop_front을 μ΄μš©ν•΄ FIFO λ™μž‘ 제곡.
  • μš”μ†Œ 버퍼: cc_element_t

cc_stack

  • LIFO μŠ€νƒ.
  • λ‚΄λΆ€μ μœΌλ‘œ cc_dequeλ₯Ό μž¬μ‚¬μš©ν•œ 얇은 래퍼.
  • cc_deque의 push_back/pop_back을 μ΄μš©ν•˜μ—¬ LIFO λ™μž‘ 제곡.
  • μš”μ†Œ 버퍼: cc_element_t

cc_forward_list

  • 단일 μ—°κ²° 리슀트(singly-linked list).
  • λ‚΄λΆ€ λ…Έλ“œλŠ” μ‚¬μš©μž 제곡 배열을 톡해 Simple Segregated Storage둜 ν’€ 관리.
  • λ…Έλ“œ ν• λ‹Ή/ν•΄μ œλŠ” 라이브러리 λ‚΄λΆ€μ˜ κ³ μ • μš©λŸ‰ λ©”λͺ¨λ¦¬ ν’€μ—μ„œ μˆ˜ν–‰.
  • λ…Έλ“œ 포인터λ₯Ό μ΄μš©ν•œ O(1) μ‚½μž…/μ‚­μ œ 지원.
  • μš”μ†Œ 버퍼: cc_snode_t

cc_list

  • 이쀑 μ—°κ²° 리슀트(doubly-linked list).
  • λ‚΄λΆ€ λ…Έλ“œλŠ” μ‚¬μš©μž 제곡 배열을 톡해 Simple Segregated Storage둜 ν’€ 관리.
  • λ…Έλ“œ ν• λ‹Ή/ν•΄μ œλŠ” 라이브러리 λ‚΄λΆ€μ˜ κ³ μ • μš©λŸ‰ λ©”λͺ¨λ¦¬ ν’€μ—μ„œ μˆ˜ν–‰.
  • λ…Έλ“œ 포인터λ₯Ό μ΄μš©ν•œ O(1) μ‚½μž…/μ‚­μ œ 지원.
  • λ…Έλ“œ λ‹¨μœ„ μ‚½μž…/μ‚­μ œμ™€ 순회 지원.
  • μ‚½μž… μ‹œ μƒˆ λ…Έλ“œλŠ” μ§€μ •ν•œ λ…Έλ“œμ˜ μ•žμ— μ‚½μž…λ¨(insert-before semantics).
  • μš”μ†Œ 버퍼: cc_dnode_t

cc_set (μ •λ ¬λœ μ§‘ν•©)

  • μš”μ†Œλ₯Ό μ •λ ¬λœ μˆœμ„œλ‘œ μœ μ§€ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ
  • 이진 탐색 기반 μ‚½μž… μœ„μΉ˜ 탐색.
  • μ •λ ¬ κΈ°μ€€κ³Ό 동등 λΉ„κ΅λŠ” μ‚¬μš©μž 콜백(cc_less_t, cc_equal_t)으둜 제곡.
  • 쀑볡 ν‚€λŠ” ν—ˆμš©λ˜μ§€ μ•ŠμŒ(μΆ”κ°€ μ‹œ κΈ°μ‘΄ ν‚€κ°€ 있으면 μ‹€νŒ¨).
  • μš”μ†Œ 버퍼: cc_element_t

cc_map (μ •λ ¬λœ λ§΅)

  • ν‚€/κ°’ μŒμ„ μ •λ ¬λœ μˆœμ„œλ‘œ μœ μ§€ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ
  • 이진 탐색 기반 μ‚½μž… μœ„μΉ˜ 탐색.
  • μ •λ ¬ κΈ°μ€€κ³Ό 동등 λΉ„κ΅λŠ” μ‚¬μš©μž 콜백(cc_less_t, cc_equal_t)으둜 제곡.
  • 쀑볡 ν‚€λŠ” ν—ˆμš©λ˜μ§€ μ•ŠμŒ(μΆ”κ°€ μ‹œ κΈ°μ‘΄ ν‚€κ°€ 있으면 μ‹€νŒ¨).
  • μš”μ†Œ 버퍼: cc_pair_t

cc_unordered_set (μ˜€ν”ˆ μ–΄λ“œλ ˆμ‹± ν•΄μ‹œ ν…Œμ΄λΈ”)

  • ν•΄μ‹œ 기반 λΉ λ₯Έ 검색/μ‚½μž…/μ‚­μ œλ₯Ό μ§€μ›ν•˜λŠ” ν…Œμ΄λΈ”
  • μ˜€ν”ˆ μ–΄λ“œλ ˆμ‹± μ„ ν˜• ν”„λ‘œλΉ™(κ΅¬ν˜„μƒ κΈ°λ³Έ) μ‚¬μš©.
  • ν•΄μ‹œ κ°’ 생성기(cc_hash_generate_t)와 동등 비ꡐ(cc_equal_t)λ₯Ό μ‚¬μš©μž 제곡.
  • ν…Œμ΄λΈ” 크기(버킷 수)λŠ” 생성 μ‹œ κ²°μ •.
  • 쀑볡 ν‚€λŠ” ν—ˆμš©λ˜μ§€ μ•ŠμŒ(μΆ”κ°€ μ‹œ κΈ°μ‘΄ ν‚€κ°€ 있으면 μ‹€νŒ¨).
  • 빈 ν•­λͺ© / 제거된 ν•­λͺ©μ„ κ΅¬λΆ„ν•˜μ—¬ μ‚­μ œ ν›„ 검색 연속성 μœ μ§€.
  • μš”μ†Œ 버퍼: cc_bucket_t

cc_unordered_map (μ •λ ¬λ˜μ§€ μ•Šμ€ λ§΅, ν•΄μ‹œ λ§΅)

  • ν‚€/κ°’ μŒμ„ μ €μž₯ν•˜λŠ” ν•΄μ‹œ λ§΅.
  • μ˜€ν”ˆ μ–΄λ“œλ ˆμ‹± μ„ ν˜• ν”„λ‘œλΉ™(κ΅¬ν˜„μƒ κΈ°λ³Έ) μ‚¬μš©.
  • ν•΄μ‹œ κ°’ 생성기(cc_hash_generate_t)와 동등 비ꡐ(cc_equal_t)λ₯Ό μ‚¬μš©μž 제곡.
  • ν…Œμ΄λΈ” 크기(버킷 수)λŠ” 생성 μ‹œ κ²°μ •.
  • 쀑볡 ν‚€λŠ” ν—ˆμš©λ˜μ§€ μ•ŠμŒ(μΆ”κ°€ μ‹œ κΈ°μ‘΄ ν‚€κ°€ 있으면 μ‹€νŒ¨).
  • 빈 ν•­λͺ© / 제거된 ν•­λͺ©μ„ κ΅¬λΆ„ν•˜μ—¬ μ‚­μ œ ν›„ 검색 연속성 μœ μ§€.
  • μš”μ†Œ 버퍼: cc_pair_bucket_t

cc_priority_queue (μš°μ„ μˆœμœ„ 큐)

  • μš”μ†Œμ˜ μš°μ„ μˆœμœ„λ₯Ό 기반으둜 ν•œ 큐.
  • binary heap(min-heap) 자료ꡬ쑰 μ‚¬μš©.
  • μ •λ ¬ κΈ°μ€€ μ‚¬μš©μž 콜백(cc_less_t)으둜 제곡.
  • μš”μ†Œ 버퍼: cc_element_t