[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ๋ฐฐ์—ด, ๋ฌธ์ž์—ด

๋ชฉ์ฐจ

  1. ๋ฐฐ์—ด
    1. ์„ ์–ธ
    2. ์ดˆ๊ธฐํ™”
    3. ์ ‘๊ทผ
    4. ๋‹ค์ฐจ์› ๋ฐฐ์—ด
    5. ํฌ์†Œ ํ–‰๋ ฌ ํ‘œํ˜„
    6. ์ฃผ์†Œ์™€ ํฌ์ธํ„ฐ
      1. ํฌ์ธํ„ฐ
    7. ํŠน์ง•
    8. ์ œ์•ฝ
      1. ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
      2. ๋™์  ๋ฐฐ์—ด(vector)
  2. ๋ฌธ์ž์—ด
    1. ์„ ์–ธ
    2. ์ดˆ๊ธฐํ™”
    3. ํ•จ์ˆ˜

 

๋ฐฐ์—ด / ๋ฌธ์ž์—ด

๋ฐฐ์—ด

๋ฐฐ์—ด์ด๋ž€ ๋‹จ์ผ ์‹๋ณ„์ž๋กœ _๊ฐ™์€ ์ž๋ฃŒํ˜•_์˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์„ ์–ธ

c++์—์„œ๋Š” int arr[3];์™€ ๊ฐ™์ด ์ž๋ฃŒํ˜• ๋ฐฐ์—ด์ด๋ฆ„[๋ฐฐ์—ด ๊ธธ์ด];๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. ์ด ๋•Œ, ๋Œ€๊ด„ํ˜ธ ๋‚ด์˜ ์š”์†Œ์˜ ๊ฐฏ์ˆ˜๋Š” '์ปดํŒŒ์ผ ํƒ€์ž„ ์ƒ์ˆ˜'์—ฌ์•ผํ•œ๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•  ๋•Œ, ๊ณ ์ • ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋งคํฌ๋กœ ๊ธฐํ˜ธ ์ƒ์ˆ˜ (ex_ #define ARRAY_LEN 5)๋‚˜ ์—ด๊ฑฐ์ž(ex_enum A{ARRAY_LEN = 5})๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. const ๋˜ํ•œ ์ปดํŒŒ์ผ ์‹œ ๊ณ ์ •๋˜๋Š” ์ƒ์ˆ˜์ด๋ฏ€๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

c#์—์„œ๋Š” readonly์™€ const๊ฐ€ ๊ตฌ๋ถ„๋˜์–ด ์‹คํ–‰์‹œ๊ฐ„ / ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ๊ณ ์ •๋˜๋Š” ์ƒ์ˆ˜๋ฅผ ๋งŒ๋“ค์ง€๋งŒ c++์—์„œ๋Š” const๋งŒ ์กด์žฌํ•œ๋‹ค.

์›๋ž˜ ์„ ์–ธ๋˜์–ด ์žˆ๋˜ ๋ณ€์ˆ˜๋ฅผ const ๋ณ€์ˆ˜๋กœ ๋‹ค์‹œ ๋ฐ›๋Š”๋‹ค๋ฉด, c++์—์„œ๋Š” ์‹คํ–‰์‹œ๊ฐ„ ์ƒ์ˆ˜๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

ex_ int tmp = 5; const int len = tmp; // len์ด ๋Ÿฐํƒ€์ž„ ์ƒ์ˆ˜

 

์ดˆ๊ธฐํ™”

๋ฐฐ์—ด์€ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๊ณ , ๋”ฐ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ค€๋‹ค๋ฉด, ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์ž…๋ ฅํ•  ํ•„์š” ์—†์ด ์ดˆ๊ธฐํ™”๋œ ์š”์†Œ์˜ ๊ฐฏ์ˆ˜๋กœ ๊ธธ์ด๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

ex_int arr[]={1,2,3}; // ๊ธธ์ด 3

 

๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์€ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ๋ณ„๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉด ์“ฐ๋ ˆ๊ธฐ๊ฐ’์œผ๋กœ, ์ดˆ๊ธฐํ™”ํ•ด์ค€ ์š”์†Œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด ๋‚˜๋จธ์ง€ ์š”์†Œ๋“ค์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

ex_

int arr[5]={1,2,3}; // 1,2,3,0,0
int arr[5]; // ์“ฐ๋ ˆ๊ธฐ ๊ฐ’
int arr[5]={0}; // 0,0,0,0,0

 

๋ฐฐ์—ด์— ๊ธฐ๋ณธ๊ฐ’์„ ์ฑ„์šฐ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ์‹์€ ์•„๋ž˜์˜ ๊ธ€์— ์ •๋ฆฌํ•ด๋‘์—ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’ ์ฑ„์šฐ๊ธฐ

 

์ ‘๊ทผ

๊ฐ ์š”์†Œ๋“ค์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” offset์„ ์ด์šฉํ•˜์—ฌ arr[0],arr[1]๊ณผ ๊ฐ™์ด ์ ‘๊ทผํ•œ๋‹ค.

 

๋‹ค์ฐจ์› ๋ฐฐ์—ด

๋ฐฐ์—ด์€ ์ฐจ์›์„ ๋Š˜๋ ค๊ฐ€๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ ์–ธ์€ int arr[2][5]์™€ ๊ฐ™์ด n์ฐจ์›์˜ ๊ฒฝ์šฐ n๊ฐœ์˜ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋งจ ์•ž์˜ ๋Œ€๊ด„ํ˜ธ ์†์˜ ๊ธธ์ด ์ œ์™ธ ๋ชจ๋“  ๊ธธ์ด๋ฅผ ํ‘œ์‹œํ•ด๋‘์–ด์•ผํ•œ๋‹ค.

ex_ int arr[][5]; // ์ƒ๋žต๋œ ๊ธธ์ด๋Š” ์ดˆ๊ธฐํ™” ์‹œ ๊ฒฐ์ •๋œ๋‹ค.

 

์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋  ๋•Œ๋Š” 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์—ฐ์†ํ•ด์„œ ์ €์žฅ๋˜๋Š”๋ฐ, ์ด ๋•Œ ๋’ค์— ์žˆ๋Š” ๋Œ€๊ด„ํ˜ธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋ฐฐ์น˜๋œ๋‹ค. ์œ„์˜ ์˜ˆ์ œ์—์„œ๋Š” ํ–‰ ์šฐ์„ ์ˆœ์œ„ ๋ฐฉ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐฐ์น˜๋˜์—ˆ๋‹ค.

์ดˆ๊ธฐํ™” ์‹œ 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ int arr[2][3]={1,2,3,4,5,6}; ์ˆœ์ฐจ์ ์œผ๋กœ ๋“ค์–ด๊ฐˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์–ด์ค„ ์ˆ˜๋„ ์žˆ๊ณ , ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

int arr[2][3]={
    {1,2,3},
    {4,5,6}
}

๋ฐฐ์ •๋˜๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ ๊ฐ’๋„ 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๋กœ์ง์ด๋‹ค.

 

ํฌ์†Œ ํ–‰๋ ฌ ํ‘œํ˜„

  1. ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
    • -) ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋œ๋‹ค.
    • +) ํ–‰๋ ฌ์˜ ์—ฐ์‚ฐ๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. 0์ด ์•„๋‹Œ ์š”์†Œ๋งŒ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• (ํ–‰, ์—ด, ๊ฐ’ ์„ ์ €์žฅ)
    • -) ํ–‰๋ ฌ ์—ฐ์‚ฐ๋“ค์˜ ๊ตฌํ˜„์ด ๋ณต์žกํ•ด์ง„๋‹ค.
    • +) ๊ณต๊ฐ„์ด ์ ˆ์•ฝ๋œ๋‹ค.

 

์ฃผ์†Œ์™€ ํฌ์ธํ„ฐ

๋ฐฐ์—ด์˜ ์ด๋ฆ„์€ ํ•ด๋‹น ๋ฐฐ์—ด ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘์ฃผ์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฆ๊ฐ€ ๊ฐ์†Œ ์—ฐ์‚ฐ์ž๋กœ ๋ฐฐ์—ด์˜ ์ „ํ›„ ์š”์†Œ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๊ฐ€ ๋ฐฐ์—ด์˜ ๊ธฐ์ดˆ ์ž๋ฃŒํ˜•์„ ๋‹จ์œ„๋กœ ์ž‘์šฉํ•œ๋‹ค. ์ด๋Š” ์š”์†Œ๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ์†ํ•˜๊ฒŒ ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๋Š” ๋ฐ˜๋ณต๋ฌธ๊ณผ ํ•จ๊ป˜ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค. ์•„๋ž˜๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

int arr[5] = { 1,2,3,4,5 };
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
    cout << *(arr)+i; // 12345
}

๋ฉ”๋ชจ๋ฆฌ ์ƒ ์ฃผ์†Œ๋ฅผ ๋” ํญ๋„“๊ฒŒ ํ™œ์šฉํ•˜๋ ค๋ฉด ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

(ํฌ์ธํ„ฐ ์ •๋ฆฌ)

 

ํŠน์ง•

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€๋Š” ๋‹ฌ๋ฆฌ offset์„ ํ†ตํ•ด ์ž„์˜์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ œ์•ฝ

์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ array, ์ฆ‰ ๊ณ ์ • ๋ฐฐ์—ด์€ ์ปดํŒŒ์ผ์‹œ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์‹œ๊ฐ„์— ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์กด์—๋Š” _๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น_์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์‹คํ–‰์‹œ๊ฐ„์— ๊ฒฐ์ •ํ–ˆ๋Š”๋ฐ, ํ˜„์žฌ c++์€ _๋™์  ๋ฐฐ์—ด_์ด๋ผ๋Š” ๊ฐœ๋… ๋˜ํ•œ ์ง€์›ํ•œ๋‹ค.

 
๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜๋Š” ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ ์ „ํ•ด์ง„๋‹ค. ์ด ํ›„, ์‹คํ–‰์‹œ๊ฐ„์— ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ๋“ฑ์žฅํ–ˆ๋‹ค. ๋’ค์— ๋“ฑ์žฅํ•  ๋™์  ๋ฐฐ์—ด์€ ์‹คํ–‰์‹œ๊ฐ„์— ์ •์ ์œผ๋กœ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” '๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น'๊ณผ ๋‹ฌ๋ฆฌ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ ์ž์ฒด๋„ ๊ณ„์†ํ•ด์„œ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ผ๋Š” ์ ์—์„œ ๊ตฌ๋ถ„๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋™์  ํ• ๋‹น ์‹œ heap ์˜์—ญ์— ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋œ๋‹ค.

๋Œ€๋ถ€๋ถ„ malloc ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ heap ์˜์—ญ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์€ ํ›„, free ๋ช…๋ น์–ด๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์ค€๋‹ค.

int* a = (int*)malloc(sizeof(int) * 5);
cout << _msize(a); // 20
free(a);
cout << _msize(a); // error

sizeof๋กœ a์˜ ํฌ๊ธฐ๋ฅผ ์ธก์ •ํ•˜๋ ค ํ•˜๋ฉด int* ํ˜•์ธ ์ฃผ์†Œ์˜ ํฌ๊ธฐ๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ heap์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ธก์ •ํ•˜๋ ค๋ฉด _msize๋ฅผ ์ด์šฉํ•ด์•ผํ•œ๋‹ค.

 

์ž์„ธํ•œ ์„ค๋ช…์€ ๋”ฐ๋กœ ํฌ์ŠคํŒ…ํ•˜๊ฒ ๋‹ค.

(๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ •๋ฆฌ)

(๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ •๋ฆฌ ํ•„์š”)

(๊ฐ€๋น„์ง€ ์ฝœ๋ ‰์…˜ / ํž™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ •๋ฆฌ ํ•„์š”)

 
๋™์  ๋ฐฐ์—ด (vector)

vector๋Š” ๊ธธ์ด๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ ์ธ ๋ฐฐ์—ด๋กœ์จ ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•œ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, offset์„ ์ด์šฉํ•˜์—ฌ ์ž„์˜์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ vector๋Š” ์ˆœ์ฐจ์  ๋™์  ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

์‹คํ–‰์‹œ๊ฐ„ ์ค‘ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ํ• ๋‹นํ•œ ํ›„ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ด๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ• ๋‹น ์‹œ ์—ฌ์œ ๊ณต๊ฐ„์„ ๋‘”๋‹ค.

๋‹ค๋ฅธ ๋™์ /์ˆœ์ฐจ ์ปจํ…Œ์ด๋„ˆ์ธ deque, list, forward-list์™€ ๋น„๊ตํ•˜๋ฉด, ์ปจํ…Œ์ด๋„ˆ end์—์„œ์˜ ์‚ฝ์ž… / ์‚ญ์ œ ์—ฐ์‚ฐ์€ ํšจ์œจ์ ์ด์ง€๋งŒ ๋‹ค๋ฅธ ์œ„์น˜์—์„œ์˜ ์—ฐ์‚ฐ์€ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

<์ƒ์„ฑ>

import <vector>; ๋กœ c++ STL์ธ vector๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„, vector<int> vec;๊ณผ ๊ฐ™์ด vector<์ž๋ฃŒํ˜•> ๋ฒกํ„ฐ์ด๋ฆ„์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

STL : Standard Template Library (ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

 

<์ดˆ๊ธฐํ™”>

vector์— ๊ธฐ๋ณธ๊ฐ’์„ ์ฑ„์šฐ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ์‹์€ ์•„๋ž˜์˜ ๊ธ€์— ์ •๋ฆฌํ•ด๋‘์—ˆ๋‹ค.

(๊ธฐ๋ณธ๊ฐ’ ์ฑ„์šฐ๊ธฐ ๋งํฌ)

์ž์„ธํ•œ ์„ค๋ช…์€ STL์„ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์„œ ์˜ฌ๋ฆฌ๊ฒ ๋‹ค.

(STL ์ •๋ฆฌ)

 

๋ฌธ์ž์—ด

๋ฌธ์ž์—ด์€ char ์ž๋ฃŒํ˜•์˜ ๋ฐฐ์—ด์ด๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜์ž๋ฉด bytes์˜ ๋ฐฐ์—ด์ธ basic_string์˜ ํ•œ ์˜ˆ๋กœ charํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” string class๊ฐ€ ์žˆ๊ณ  ์ด๊ฒƒ์ด ๋ฌธ์ž์—ด์ด๋‹ค. UTF-8๊ณผ ๊ฐ™์€ multi-byte๋‚˜ ์—ฌ๋Ÿฌ ๊ธธ์ด์˜ char ์ž๋ฃŒํ˜•์„ ๋‹ค๋ฃจ๋”๋ผ๋„, string class์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋“ค์€ byte๋‹จ์œ„๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฝ”๋”ฉ์—๋Š” ์ œ์•ฝ์ด ์—†๋‹ค.

(์ธ์ฝ”๋”ฉ ์ข…๋ฅ˜ ์ •๋ฆฌ)

C++์—์„œ๋Š” ์ฃผ๋กœ import <string>;์œผ๋กœ string ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

์„ ์–ธ

string ๋ณ€์ˆ˜์ด๋ฆ„;๊ณผ ๊ฐ™์ด ์„ ์–ธํ•œ๋‹ค.

 

์ดˆ๊ธฐํ™”

์ดˆ๊ธฐํ™”๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— constructor์—๊ฒŒ ์ดˆ๊ธฐํ™”ํ•  ๋ฌธ์ž์—ด์„ ๋„˜๊ฒจ์ค„ ์ˆ˜๋„ ์žˆ๊ณ , ๋”ฐ๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. constructor์—๋Š” ๋Œ€๊ด„ํ˜ธ("")๋กœ ๋ฌถ์ธ ๋ฌธ์ž์—ด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ string ๊ฐ์ฒด๋„ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋‹ค.

ex_ string s = "hi"; string s("hi"); string s1(s);

constructor์— (์ˆซ์ž, ๋ฌธ์ž)์„ ๋„˜๊ธฐ๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ์ €์žฅํ•˜๋ฉฐ, (๋ฌธ์ž์—ด, ์ˆซ์ž1, ์ˆซ์ž2)๋ฅผ ๋„˜๊ธฐ๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด์„ offset์ด ์ˆซ์ž1์ธ ๊ณณ๋ถ€ํ„ฐ ์ˆซ์ž2 ๋งŒํผ ์ €์žฅํ•œ๋‹ค. ์ „์ž(ๅ‰่€…)์˜ ์ƒํ™ฉ์—์„œ ๋ฌธ์ž์—๋Š” ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๋„ ๋˜์ง€๋งŒ, ์ด๋Š” ์•„์Šคํ‚ค์ฝ”๋“œ์— ์˜ํ•ด ๋ณ€ํ™˜๋˜์–ด ์ €์žฅ๋œ๋‹ค.

ex_ string s1(10,'x'); // xxxxxxxxxx

string s1(10,42); // **********

 

ํ•จ์ˆ˜

  • size : ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ๋ฅผ byte ๋‹จ์œ„๋กœ return
  • length : size ํ•จ์ˆ˜์™€ ๊ฐ™์Œ
  • [] : ๊ฐ ์š”์†Œ์— ์ ‘๊ทผ
  • at : [] ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์Œ
  • back / front : ๋งˆ์ง€๋ง‰, ์ฒ˜์Œ ๋ฌธ์ž์— ์ ‘๊ทผ
  • append : ๊ธฐ์กด ๋ฌธ์ž์—ด์— ๋”ํ•˜๊ธฐ
  • += : append ํ•จ์ˆ˜์™€ ๊ฐ™์Œ
  • push_back /pop_back : ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ๊ธฐ์กด ๋ฌธ์ž์—ด์— ๋”ํ•˜๊ธฐ
  • assign : ๋„˜๊ฒจ์ค€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ stringํ™” ํ•˜์—ฌ ๋ณ€์ˆ˜์— ๋„ฃ๊ธฐstring str; str.assign("heeeun is cool",6); // heeeun
  • string str; str.assign(10,*); // **********
  • insert : ๋„˜๊ฒจ๋ฐ›์€ ์œ„์น˜์— ๋„˜๊ฒจ๋ฐ›์€ ๋ฌธ์ž์—ด ์‚ฝ์ž…
  • erase : ๋„˜๊ฒจ๋ฐ›์€ ์œ„์น˜๋ถ€ํ„ฐ ๋„˜๊ฒจ๋ฐ›์€ ๋ฌธ์ž๊ฐฏ์ˆ˜๋งŒํผ ์‚ญ์ œ
  • find : ๋„˜๊ฒจ๋ฐ›์€ ๋ฌธ์ž์—ด์— ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜ ๋ฐ˜ํ™˜, ์—†๋‹ค๋ฉด npos ๋ฐ˜ํ™˜
  • compare : ๋„˜๊ฒจ๋ฐ›์€ ๋ฌธ์ž์—ด๊ณผ ๊ธฐ์กด์˜ ๋ฌธ์ž์—ด ๋น„๊ต
  • 0: ๊ฐ™์Œ
  • substr : ๋„˜๊ฒจ๋ฐ›์€ ์œ„์น˜์—์„œ ๋„˜๊ฒจ๋ฐ›์€ ๋ฌธ์ž๊ฐฏ์ˆ˜๋งŒํผ ์ž˜๋ผ์„œ ๋ฐ˜ํ™˜

์ฐธ๊ณ  ) http://www.cplusplus.com/reference/string/string/

๋ฐ˜์‘ํ˜•