[C++ STL] vector ์ปจํ…Œ์ด๋„ˆ

2021. 7. 26. 20:59ยท C++
๋ชฉ์ฐจ
  1. ๐Ÿ’ก vector์˜ ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ํŠน์ง•
  2. ๐Ÿ’ก vector์˜ ์ƒ์„ฑ์ž
  3. ๐Ÿ’ก ํ• ๋‹น(ํฌ๊ธฐ์™€ ๋ฉ”๋ชจ๋ฆฌ)
  4. ๐Ÿ’ก ์ฐธ์กฐ
  5. ๐Ÿ’ก ์‚ฝ์ž…
  6. ๐Ÿ’ก ์ œ๊ฑฐ
  7. ๐Ÿ’ก vector ์ปจํ…Œ์ด๋„ˆ ์ฃผ์š” ํŠน์ง• ์ •๋ฆฌ
728x90

 

๐Ÿ’ก vector์˜ ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ํŠน์ง•

 

vector ์ปจํ…Œ์ด๋„ˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•œ ์–‘์ƒ์„ ๋„๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ์— ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ค‘ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค.

 

๋˜ํ•œ vector๋Š” ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›์†Œ์˜ ์ €์žฅ ์œ„์น˜(์ˆœ์„œ)๊ฐ€ ์ •ํ•ด์ง€๋ฉฐ, ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ์ด๋ฏ€๋กœ ์›์†Œ๊ฐ€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

vetor์˜ ๊ตฌ์กฐ

์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ๋Š”

์›์†Œ๋ฅผ ์ฐจ๋ก€์ฐจ๋ก€ ์ถ”๊ฐ€ํ•˜๋Š” push_back()๊ณผ ์ œ๊ฑฐํ•˜๋Š” pop_back() ์—ฐ์‚ฐ๊ณผ

์ฒซ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” front()์™€ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” back() ์—ฐ์‚ฐ

์ง€์ •ํ•œ ์œ„์น˜์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” insert() ์—ฐ์‚ฐ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

 

vector์˜ ๊ฒฝ์šฐ ์•ž์ชฝ์ด ๋ง‰ํ˜€์žˆ๋Š” ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ž ์ชฝ์—์„œ ์›์†Œ๋ฅผ ์ถ”๊ฐ€/์ œ๊ฑฐ๋ฅผ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋’ท ์ชฝ์—์„œ๋งŒ ์›์†Œ๋ฅผ ์ถ”๊ฐ€/์ œ๊ฑฐ(push_back(), pop_back()) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

๐Ÿ’ก vector์˜ ์ƒ์„ฑ์ž

vector<T> v v๋Š” ๋นˆ ์ปจํ…Œ์ด๋„ˆ
vector<T> v(n) v์— ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ n๊ฐœ์˜ ์›์†Œ๊ฐ€ ์žˆ๋‹ค.
vector<T> v(n,x) v์— x๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ n๊ฐœ์˜ ์›์†Œ๊ฐ€ ์žˆ๋‹ค.
vector<T> v(v2) v๋Š” vector<T> v2์˜ ๋ณต์‚ฌ๋ณธ์ด๋‹ค.
vector<T> v(b,e) v๋Š” ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„ [b,e)๋กœ ์ดˆ๊ธฐํ™”๋œ ์›์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.

 


 

๐Ÿ’ก ํ• ๋‹น(ํฌ๊ธฐ์™€ ๋ฉ”๋ชจ๋ฆฌ)

 

1. ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜ - size(), capacity(), max_size()

vector<int> v;

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

cout << v.size() << endl;
cout << v.capacity() << endl;
cout << v.max_size();

[์ถœ๋ ฅ ๊ฒฐ๊ณผ]

5 // size(): ์›์†Œ์˜ ๊ฐœ์ˆ˜ 
6 // capacity(): ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ
1073741823 // max_size(): ์ตœ๋Œ€ ์ €์žฅ ๊ฐ€๋Šฅํ•œ ์›์†Œ์˜ ๊ฐœ์ˆ˜

size()์™€ max_size()๋Š” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, capacity()๋Š” ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด vector์— ๋Œ€ํ•ด ์ข€ ๋” ์•Œ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


 

2. capacity()์— ๋Œ€ํ•˜์—ฌ

์œ„์—์„œ ์‚ฌ์šฉํ•ด๋ดค๋˜ size()์™€ max_size()๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ€์ง€๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ capacity()๋Š” ์˜ค์ง vector ์ปจํ…Œ์ด๋„ˆ๋งŒ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

์™œ์ผ๊นŒ์š”?

์ด๋Š” vector์˜ "๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ •์ฑ…"๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

vector๋Š” push_back()์„ ํ†ตํ•ด์„œ ์›์†Œ๋ฅผ ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ž…๋‹ˆ๋‹ค.

(์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.)

์›์†Œ๊ฐ€ ์ถ”๊ฐ€ ๋  ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค์ค˜์•ผ ํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

 

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

์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฐœ๋…์ด ๋ฐ”๋กœ capacity์ž…๋‹ˆ๋‹ค.

์›์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žฌํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  ๋ฏธ๋ฆฌ ๋„‰๋„‰ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•œ๋‹ค๋ฉด, ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ,

  โ“ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ(capacity) โ‰ฅ ์›์†Œ์˜ ๊ฐœ์ˆ˜(size)์ผ ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ์žฌํ• ๋‹น ์ˆ˜ํ–‰ X

  โ“‘ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ(capacity) ๏ผœ ์›์†Œ์˜ ๊ฐœ์ˆ˜(size)์ผ ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ์žฌํ• ๋‹น ์ˆ˜ํ–‰ O

     ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ •์ฑ…์€ ์ปดํŒŒ์ผ๋Ÿฌ๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด์ง€๋งŒ ๋Œ€์ฒด๋กœ ์ด์ „ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์˜ 1/2๋งŒํผ์„ ๋” ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. 


 

3. reserve(), resize(), swap()

  1) ๋ฉ”๋ชจ๋ฆฌ ์˜ˆ์•ฝ ํ•จ์ˆ˜ reserve()

     ์›ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด reserve()๋ฅผ ํ†ตํ•ด capacity๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     size๊ฐ€ capacity๋ฅผ ์ดˆ๊ณผํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ ์žฌํ• ๋‹น์ด ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

     ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์›์†Œ๊ฐ€ ๋” ์ถ”๊ฐ€๋˜์–ด size๊ฐ€ capacity๋ณด๋‹ค ๋” ์ปค์ง€๋ฉด ๊ทธ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์žฌํ• ๋‹น์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

    vector<int> v;
    v.reserve(4);
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    cout << v.capacity() << endl;

    v.push_back(50);
    cout << v.capacity();

[์ถœ๋ ฅ๊ฒฐ๊ณผ]

4
6

 

  2) ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ(size) ๋ณ€๊ฒฝ resize()

     ์ปจํ…Œ์ด๋„ˆ์˜ size๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ ๊ฐ’์œผ๋กœ ์žฌ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. 

     ์—ฌ๊ธฐ์„œ ์œ ์˜ํ•  ์ ์€ โ‘  size๋ฅผ ํ‚ค์šธ ๋•Œ capacity๋„ ๋Š˜์–ด๋‚˜์ง€๋งŒ, โ‘ก size๋ฅผ ์ค„์ผ ๋•Œ์—๋Š” capacity๊ฐ€ ๊ฐ™์ด ์ค„์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

     ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋‘ ๊ฐœ ์ „๋‹ฌํ•˜์—ฌ ํ™•์žฅ๋˜๋Š” ์›์†Œ์— ์ดˆ๊นƒ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     v.resize(20, 5)๋Š” size๋ฅผ 20์œผ๋กœ ๋Š˜๋ฆฌ๊ณ , ์ถ”๊ฐ€๋˜๋Š” ์›์†Œ๋ฅผ 5๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

 

  3) swap()

     swap()์„ ์ด์šฉํ•œ ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ œ๊ฑฐ

    vector<int> v(5);
    // vector<int>(): ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž„์‹œ ๊ฐ์ฒด ์ƒ์„ฑ(capacity: 0)
    // vector<int>().swap(v): ์ƒ์„ฑ๋œ ์ž„์‹œ ๊ฐ์ฒด์™€ v๋ฅผ swap
    vector<int>().swap(v);

    ๋‘ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ ์›์†Œ ๊ตํ™˜

    vector<int> v1;
    v1.push_back(10);
    v1.push_back(20);
    
    vector<int> v2;
    v2.push_back(100);
    v2.push_back(200);
    
    v1.swap(v2);

 

4. empty(), clear()

   clear()๋Š” vector ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ์›์†Œ๋ฅผ ๋น„์šฐ๋ผ๋Š” ๋œป์ด๋ฉฐ, empty()๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋น„์—ˆ๋Š”์ง€์˜ ์œ ๋ฌด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

    vector<int> v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);

    cout << v.empty() << endl;

    v.clear();
    cout << v.empty();

[์ถœ๋ ฅ ๊ฒฐ๊ณผ]

0 // empty(): false
1 // empty(): true

 


 

๐Ÿ’ก ์ฐธ์กฐ

1. ์ฒซ ๋ฒˆ์งธ ์›์†Œ ์ฐธ์กฐ front(),  ๋งˆ์ง€๋ง‰ ์›์†Œ ์ฐธ์กฐ back()

    vector<int> v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);

    cout << v.front() << endl; // ์ฒซ ๋ฒˆ์งธ ์›์†Œ ์ฐธ์กฐ
    cout << v.back(); // ๋งˆ์ง€๋ง‰ ์›์†Œ ์ฐธ์กฐ

[์ถœ๋ ฅ ๊ฒฐ๊ณผ]

10
40

 

 

2. [], at()

์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ ์ค‘ ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ์ธ vector์™€ deque๋Š” [] ์—ฐ์‚ฐ์ž์™€ at() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[] ์—ฐ์‚ฐ์ž์™€ at() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” ๊ธฐ๋Šฅ์ด๋‚˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค. 

[] ์—ฐ์‚ฐ์ž๋Š” ๋ฒ”์œ„ ์ ๊ฒ€์„ ํ•˜์ง€ ์•Š์ง€๋งŒ, at() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” ๋ฒ”์œ„ ์ ๊ฒ€์„ ํ•˜๋ฉฐ ๋™์ž‘ํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

<at() ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ, ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ out_of_range ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.>

 

๋”ฐ๋ผ์„œ [] ์—ฐ์‚ฐ์ž๊ฐ€ at() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ณด๋‹ค ์†๋„๊ฐ€ ์กฐ๊ธˆ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.

    vector<int> v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);

    // [] ์—ฐ์‚ฐ์ž์™€ at() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค.
    cout << v[2] << endl;
    cout << v.at(2);

[์ถœ๋ ฅ ๊ฒฐ๊ณผ]

30
30

 


 

๐Ÿ’ก ์‚ฝ์ž…

1. push_back()

   ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์ธ์ž๋ฅผ ํ•ด๋‹น vector์˜ ๋’ท ์ชฝ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

    vector<int> v;
    v.push_back(100); // 100
    v.push_back(200); // 100 200

 

2. insert()

  1) q = v.insert(p, x)

     ์—ฌ๊ธฐ์„œ p๊ณผ q๋Š” ๋ฐ˜๋ณต์ž์ž…๋‹ˆ๋‹ค.

     p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๋ฆฌ์— ๊ฐ’ x๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ , ์‚ฝ์ž…ํ•œ x์˜ ์œ„์น˜๋ฅผ ๋ฐ˜๋ณต์ž๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ q์— ์ „๋‹ฌํ•ด์ค๋‹ˆ๋‹ค.

    vector<int> v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);

    vector<int>::iterator iter = v.begin() + 2;
    vector<int>::iterator iter2;

    // iter๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์— 100์„ ์‚ฝ์ž…ํ•œ๋‹ค.
    // iter2: ์‚ฝ์ž…๋œ 100์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ˜๋ณต์ž
    // insert ์ดํ›„: 10 20 100 30 40
    iter2 = v.insert(iter, 100);
    
    for(iter = v.begin(); iter != v.end(); iter++){
        // *iter๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
        cout << *iter << " ";
    }
    cout << endl;
    cout << "iter 2: " << *iter2;

  2) v.insert(p, n, x)

     p๋Š” ๋ฐ˜๋ณต์ž, n์€ ์‚ฝ์ž…ํ•  ์›์†Œ์˜ ๊ฐฏ์ˆ˜, x๋Š” ์‚ฝ์ž…ํ•  ์›์†Œ์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

     p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์— ๊ฐ’์ด x์ธ ์›์†Œ n๊ฐœ๋ฅผ ์‚ฝ์ž…ํ•˜๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

    vector<int> v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);

    vector<int>::iterator iter = v.begin() + 2;

    // iter๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์— ์ •์ˆ˜ 100๊ฐœ๋ฅผ 3๊ฐœ ์‚ฝ์ž…
    // insert ์ดํ›„: 10 20 100 100 100 30 40
    v.insert(iter, 3, 100);

  3) v.insert(p, b, e)

     p๋Š” ๋ฐ˜๋ณต์ž, b์™€ e๋Š” ๊ตฌ๊ฐ„์ž…๋‹ˆ๋‹ค.

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

    vector<int> v;
    v.push_back(100);
    v.push_back(200);
    
    vector<int>::iterator iter = v.begin() + 1;

    // iter ์œ„์น˜์— [v.begin(), v.end()) ๊ตฌ๊ฐ„์˜ ์›์†Œ๋ฅผ ์‚ฝ์ž…์ž…
    // insert ํ›„: 100 100 200 200
    v.insert(iter, v.begin(), v.end());

 

๐Ÿ’ก ์ œ๊ฑฐ

1. pop_back()

   ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ๋”ฐ๋กœ ์—†์œผ๋ฉฐ, ํ•ด๋‹น ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด vector์˜ ์ œ์ผ ๋’ค์— ์žˆ๋Š” ์›์†Œ๊ฐ€ ์ œ๊ฑฐ๋œ๋‹ค.

    vector<int> v;
    v.push_back(100);
    v.push_back(200); // 100 200
    
    v.pop_back(); // 100
    v.pop_back(); // empty

2. erase()

  1) q = v.erase(p)

     q์™€ p ๋ชจ๋‘ ๋ฐ˜๋ณต์ž์ž…๋‹ˆ๋‹ค.

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

    vector<int> v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    v.push_back(50); // 10 20 30 40 50

    vector<int>::iterator iter = v.begin() + 1; // 20์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ด
    vector<int>::iterator iter2;

    iter2 = v.erase(iter); // 10 30 40 50

  2) q = v.erase(b, e)

     q๋Š” ๋ฐ˜๋ณต์ž, b์™€ e๋Š” ๊ตฌ๊ฐ„์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

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

    vector<int> v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    v.push_back(50); // 10 20 30 40 50

    vector<int>::iterator iter;

    // [v.begin(), v.begin() + 2) ๊ตฌ๊ฐ„: 10, 20์˜ ์›์†Œ๋ฅผ ์ œ๊ฑฐ
    iter = v.erase(v.begin(), v.begin() + 2); // 30 40 50

๐Ÿ’ก vector ์ปจํ…Œ์ด๋„ˆ ์ฃผ์š” ํŠน์ง• ์ •๋ฆฌ

1. vector๋Š” ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ์ด๋ฉฐ ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ์ž…๋‹ˆ๋‹ค. 

2. ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›์†Œ๊ฐ€ ์ถ”๊ฐ€ ๋˜๊ฑฐ๋‚˜ ์‚ฝ์ž…๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์žฌํ• ๋‹น์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ ์ƒ๋‹นํ•œ ๋น„์šฉ์ด ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

3. capacity()๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. reserve()๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ(capacity)๋ฅผ ํ• ๋‹น(์˜ˆ์•ฝ)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ์›์†Œ๊ฐ€ ์—ฐ์†ํ•˜๊ฒŒ ์ €์žฅ๋˜๋ฏ€๋กœ [], at()์™€ ๊ฐ™์ด ํŠน์ • ์›์†Œ์— ์ž„์˜๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์†๋„๊ฐ€ ๋น ๋ฅธ ํŽธ์ž…๋‹ˆ๋‹ค.

   []๋Š” ๋ฒ”์œ„ ๊ฒ€์‚ฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ๋Œ€์‹  ์†๋„๊ฐ€ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ณ , at()๋Š” ๋ฒ”์œ„ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š” ๋Œ€์‹  ์†๋„๊ฐ€ ์กฐ๊ธˆ ๋” ๋А๋ฆฝ๋‹ˆ๋‹ค.

   ํ•˜์ง€๋งŒ insert(), erase(), push_back() ๋“ฑ์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ํ˜ธ์ถœ๋˜์–ด์•ผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋ฉด ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

6. ์‹œํ€€์Šค ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏ€๋กœ front(), back(), push_back(), pop_back() ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

   ํ•˜์ง€๋งŒ ๋™์‹œ์— ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ์ด๋ฏ€๋กœ ์•ž ์ชฝ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” vector ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋น„ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

 

 

์ฐธ๊ณ  ์ฑ… : ๋‡Œ๋ฅผ ์ž๊ทนํ•˜๋Š” C++ STL

728x90
  1. ๐Ÿ’ก vector์˜ ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ํŠน์ง•
  2. ๐Ÿ’ก vector์˜ ์ƒ์„ฑ์ž
  3. ๐Ÿ’ก ํ• ๋‹น(ํฌ๊ธฐ์™€ ๋ฉ”๋ชจ๋ฆฌ)
  4. ๐Ÿ’ก ์ฐธ์กฐ
  5. ๐Ÿ’ก ์‚ฝ์ž…
  6. ๐Ÿ’ก ์ œ๊ฑฐ
  7. ๐Ÿ’ก vector ์ปจํ…Œ์ด๋„ˆ ์ฃผ์š” ํŠน์ง• ์ •๋ฆฌ
'C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • C++ Pointer์— ๋Œ€ํ•ด์„œ โ‘ก
  • C++ Pointer์— ๋Œ€ํ•ด์„œ โ‘ 
  • [C++ STL] map ์ปจํ…Œ์ด๋„ˆ
  • [C++ STL] STL์ด๋ž€?
HEY__
HEY__
์•ˆ๋…•ํ•˜์„ธ์š” :) ๊ณต๋ถ€ํ•˜๋ฉฐ ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜์‹œ๊ธธ ๋ฐ”๋ผ๋ฉฐ ํ˜น์‹œ ์ž˜๋ชป๋œ ์ ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! :D
250x250
HEY__
while(true) { continue; }
HEY__
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (164)
    • Spring Boot (45)
      • ์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜ (18)
    • AWS (8)
    • ํ”„๋กœ์ ํŠธ (6)
    • Network (21)
    • Operating System (8)
    • Database (4)
    • ETC (2)
    • Java (3)
    • C++ (7)
    • Python (1)
    • ๋„์„œ ๐Ÿ“š (3)
      • Effective Java (3)
    • Coding test (50)
      • Baekjoon (30)
      • Leet Code (18)
      • Programmers (2)
    • Algorithm (C++) (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํƒœ๊ทธ
  • Github
  • ๊ธ€์“ฐ๊ธฐ
  • ๋ธ”๋กœ๊ทธ๊ด€๋ฆฌ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Cloudfront
  • Network
  • slack
  • leetcode
  • kotlin
  • spring boot
  • coding test
  • aws
  • Baekjoon
  • Java
  • dispatcher servlet
  • Servlet Container
  • CPP
  • STL
  • C++
  • Spring
  • Algorithm
  • programmers
  • OS
  • HTTP

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.0
HEY__
[C++ STL] vector ์ปจํ…Œ์ด๋„ˆ
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

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

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

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

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

๋ชจ๋“  ์˜์—ญ

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

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