42seoul/projects

[CPP Module] 08

2024. 3. 13. 15:23

Exercise 00: Easy find

easyfind ๋ผ๋Š” ํ…œํ”Œ๋ฆฟํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. ํ•ด๋‹นํ•จ์ˆ˜๋Š” container์™€ value๋ฅผ ๋ฐ›๊ณ  container์•ˆ์— ํ•ด๋‹น value๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹นํ•˜๋Š” value์œ„์น˜์˜ iterator๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋งŒ์•ฝ ์กด์žฌํ•˜์ง€์•Š๋Š”๋‹ค๋ฉด error ์ฒ˜๋ฆฌ ํ•„์š”.

iterator()

typename T::iterator iter;
iter = std::find(container.begin(), container.end(), value);
std::cout << "iter :" << *iter << std::endl; // OK!

**typename T::iterator**๋Š” ๋ฐ˜๋ณต์ž ํƒ€์ž…์ด๋ฏ€๋กœ, ์ด๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ฐ˜๋ณต์ž์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

std::runtime_error

throw std::runtime_error("char");

C++ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ˆ์™ธ ํด๋ž˜์Šค๋กœ ์ด 3๊ฐ€์ง€์˜ ์ƒํ™ฉ์ผ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ ํ•œ๋‹ค.

  1. ์ž˜๋ชป๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋‚˜ ์ธ์ˆ˜
  2. ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์ฝ์„ ๋•Œ์˜ ์˜ค๋ฅ˜
  3. ๋ฆฌ์†Œ์Šค ํ• ๋‹น ์‹คํŒจ

์œ„์— ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ throw๋ฅผ ๋˜์ ธ์•ผํ•˜๋Š” ์ƒํ™ฉ์ด โ€œ1. ์ž˜๋ชป๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋‚˜ ์ธ์ˆ˜โ€ ์˜ ํ•ด๋‹น๋˜๋ฏ€๋กœ runtime_error ์‚ฌ์šฉ.


Exercise 01: Span

class Span
{}

spanํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค.

std::distance()

distance(_InputIter __first, _InputIter __last)

๋‘ ๋ฐ˜๋ณต์ž(iterator)๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ• ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

void vectorSize(std::vector<int>::iterator const &begin, std::vector<int>::iterator const &end)
{
	unsigned int size = std::distance(begin, end);
	std::cout << "size :" << size << std::endl;
}

์œ„์™€ ๊ฐ™์€ ํ˜•์‹์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์—ฌ iterator ์‚ฌ์ด์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.


Exercise 02: Mutated abomination

Container

**Container**๋Š” ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

  1. Sequence Containers
  2. Associative Containers
  3. Unordered Containers
  4. Adaptor Container

Sequence Containers

  • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ
  • ์›์†Œ์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ, ๊ฐ ์›์†Œ๋Š” ์œ„์น˜(์ธ๋ฑ์Šค)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

โ†’ std::vector , std::list, std::deque, std::array

Associative Containers

  • key-value๋ฅผ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ
  • ์›์†Œ๋Š” ์ •๋ ฌ๋œ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

โ†’ std::set, std::map, std::multiset, std::multimap

Unordered Containers

  • ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ.
  • ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ •ํ•ด์ง„ ์œ„์น˜์— ์›์†Œ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ์ •๋ ฌ์ˆœ์„œ๊ฐ€ ์—†์Œ

โ†’ std::unordered_set, std::unordered_map, std::unordered_multiset, std::unordered_multimap

Adaptor Container

  • ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ž˜ํ•‘ํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ.
  • std::stack๊ณผ std::queue๋Š” ์ฃผ๋กœ std::deque๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.

โ†’ std::stack, std::queue, std::priority_queue

์œ„์™€ ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ๊ฐ๊ฐ์˜ ํŠน์ง•์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์šฉ๋„์— ๋งž๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.

Sequence Containers : ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์œ ์šฉ.

Associative Containers : key-value ์Œ์„ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ.

Unordered Containers : ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๋ฐ ์‚ฝ์ž…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ™œ์šฉ.

Adaptor Container : stack, queue, priority_queue ๋“ฑ ํŠน๋ณ„ํ•œ ๋™์ž‘์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ํ™œ์šฉ.

std::stack()

std::stack์— ๊ฒฝ์šฐ์—๋Š” ๋”ฐ๋กœ **iterator**๋ฅผ ์ฃผ์ง€์•Š์ง€๋งŒ std::stack์— ๊ธฐ๋ฐ˜์ด ๋˜๋Š” std::deque์—๋Š” iterator๊ฐ€ ์กด์žฌํ•ด์„œ

std::stack์— ๊ฒฝ์šฐ์—๋Š” deque๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ปจํ…Œ์ด๋„ˆ๋ผ deque์— ์žˆ๋Š” iterator๋ฅผ ๋Œ์–ด์™€์„œ std::stack์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ‘œ์ค€::์Šคํƒ()
 
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'42seoul > projects' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[CPP Module] 07  (0) 2024.03.13
[C++] templates  (0) 2024.03.13
[CPP Module] 06  (0) 2024.03.13
[C++] casts  (0) 2024.03.13
[CPP Module] 05  (0) 2024.03.13
  1. Exercise 00: Easy find
  2. iterator()
  3. std::runtime_error
  4. Exercise 01: Span
  5. std::distance()
  6. Exercise 02: Mutated abomination
  7. Container
  8. std::stack()
moaoh
moaoh
๋‚˜์˜ ์„ฑ์žฅ ์ผ๊ธฐ.
moaoh
๐Ÿถ ๐Ÿพ
moaoh
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • Github
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Algorithm
      • ๊ฐœ๋…์ •๋ฆฌ
      • ๋ฌธ์ œํ’€์ด
    • 42seoul
      • projects
    • CS
    • programming language
      • C++
      • Javascript
      • Go
      • Python
      • Front-end
      • Java
    • Java Spring
    • git
    • ์ผ์ƒ
      • ์ฑ… ์ฝ๊ธฐ

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ
moaoh
[CPP Module] 08
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.