C++ STL ์ปจํ ์ด๋ - ๋ฒกํฐ (std::vector)
vector๋ ํค๋ํ์ผ <vector>์ ์ ์๋์ด ์๋ ์ปจํ ์ด๋์ ํ ์ข ๋ฅ์ ๋๋ค. ์ปจํ ์ด๋๋ C++ STL์์ ์์ ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ณด๊ดํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. vector๋ฅผ ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด ๊ฐ๋ณ ๊ธธ์ด ๋ฐฐ์ด์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ด๋, ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์๋์ผ๋ก ์ด๋ค์ง๋๋ค.
vector ์ปจํ ์ด๋๋ ๋์ ๋ฐฐ์ด๋ก ๊ตฌํ๋๋๋ฐ, ๊ฐ๊ฐ์ ์์๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฐ์์ ์ผ๋ก ์กด์ฌํฉ๋๋ค. ๋ฐ๋ผ์ vector ์ปจํ ์ด๋์ ์์๋ฅผ ์ฐธ์กฐํ ๋ ๋ฐ๋ณต์(iterator)๋ฅผ ์ด์ฉํด์ ์์ฐจ์ ์ผ๋ก ์ฐธ์กฐํ๊ฑฐ๋ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ์ ์๋์ ๊ฑฐ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทผํ ์ ์์ต๋๋ค.
vector์ ์ฅ์
-
๊ฐ๊ฐ์ ์์๋ฅผ ์ธ๋ฑ์ค(index) ๊ฐ์ผ๋ก ๋ฐ๋ก ์ฐธ์กฐ ๊ฐ๋ฅํฉ๋๋ค.
-
์์๋ค์ ์์์ ์์๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
-
๋ฒกํฐ ๋์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๊ธฐ ์ฉ์ดํฉ๋๋ค.
vector์ ์์ฑ์์ ์ฐ์ฐ์
๊ธฐ๋ณธ์ ์ธ vector์ ์ ์ธ์ vector<์๋ฃํ> ๋ณ์์ด๋ฆ ์ ๋๋ค.
ex) vector<int> v;
๊ทธ ์ธ์ ์์ฑ์๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
vector<int> v;
// ๋น์ด์๋ vector v๋ฅผ ์์ฑ
-
vector<int> v(5);
// ์์์ ๊ฐ์๊ฐ 5๊ฐ์ธ vector v๋ฅผ ์์ฑ (์์๋ 0์ผ๋ก ์ด๊ธฐํ)
-
vector<int> v(5, 2);
// ์์์ ๊ฐ์๊ฐ 5๊ฐ์ธ vector v๋ฅผ ์์ฑํ๊ณ ์์๋ฅผ 2๋ก ์ด๊ธฐํ
-
vector<int> v2(v1);
// v1์ ๋ณต์ฌํด์ vector v2๋ฅผ ์์ฑ
๋ํ ๋ vector ์ฌ์ด์ ์ฐ์ฐ์ ==, !=, <, >, <=, >= ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
vector์ ๋ฉค๋ฒ ํจ์
-
v.assign(n, x)
// v์ n๊ฐ์ ์์ x๋ฅผ ํ ๋น -
v.at(i)
// v์ i๋ฒ์งธ ์์ ์ฐธ์กฐ
// v[i]๋ณด๋ค ์๋๋ ๋๋ฆฌ์ง๋ง ๋ฒ์๋ฅผ ์ ๊ฒํจ -
v[i]
// v์ i๋ฒ์งธ ์์ ์ฐธ์กฐ
// v.at(i)๋ณด๋ค ๋น ๋ฅด์ง๋ง ๋ฒ์๋ฅผ ์ ๊ฒํ์ง ์์ -
v.front()
// v์ ์ฒซ ๋ฒ์งธ ์์ ์ฐธ์กฐ -
v.back()
// v์ ๋ง์ง๋ง ์์ ์ฐธ์กฐ -
p = v.begin()
// p๋ v์ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐ๋ณต์(iterator) -
p = v.end()
// p๋ v์ ๋ง์ง๋ง ์์ ๋ค์์ ๊ฐ๋ฆฌํค๋ iterator -
p = v.rbegin()
// p๋ v์ reverse begin(v๋ฅผ ๊ฑฐ๊พธ๋ก ๋ค์ง์์ ๋ ์ฒซ๋ฒ์งธ ์์)์ ๊ฐ๋ฆฌํค๋ iterator -
p = v.rend()
// p๋ v์ reverse end๋ฅผ ๊ฐ๋ฆฌํค๋ iterator -
v.push_back(x)
// v์ ๋งจ ๋ค์ ์์ x๋ฅผ ์ฝ์ -
v.pop_back()
// v์ ๋ง์ง๋ง ์์ ์ ๊ฑฐ -
v.clear()
// v์ ๋ชจ๋ ์์ ์ ๊ฑฐ
// ์์๋ง ์ ๊ฑฐํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ๋จ์์์ => size๋ ์ค์ด๋ค์ง๋ง capacity๋ ๊ทธ๋๋ก -
v.reserve(n)
// n๊ฐ์ ์์๋ฅผ ์ ์ฅํ ๊ณต๊ฐ ์์ฝ -
v.resize(n)
// v์ ํฌ๊ธฐ๋ฅผ n์ผ๋ก ๋ณ๊ฒฝํ๊ณ ํ์ฅ๋๋ ๊ณต๊ฐ์ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ(default: 0)์ผ๋ก ์ด๊ธฐํ -
v.resize(n, x)
// v์ ํฌ๊ธฐ๋ฅผ n์ผ๋ก ๋ณ๊ฒฝํ๊ณ ํ์ฅ๋๋ ๊ณต๊ฐ์ ๊ฐ์ x๋ก ์ด๊ธฐํ -
v.size()
// v์ ์์์ ๊ฐ์ ๋ฐํ -
v.capacity()
// v์ ํ ๋น๋ ๊ณต๊ฐ์ ํฌ๊ธฐ ๋ฐํ -
v.swap(v2)
// v์ v2๋ฅผ swap (capacity ํฌํจํด์ ๋ค swap) -
p = v.insert(i, x)
// v์ i๋ฒ์งธ์ ์์ x๋ฅผ ์ฝ์
// p๋ ์ฝ์ ํ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ iterator -
v.insert(i, n, x)
// v์ i๋ฒ์งธ์ n๊ฐ์ ์์ x๋ฅผ ์ฝ์
// ๊ทธ ์๋ฆฌ์ ์๋ ์๋ ์์๋ค์ ๋ค๋ก ๋ฐ๋ฆผ -
q = v.erase(p)
// p๊ฐ ๊ฐ๋ฆฌํค๋ ์์ ์ ๊ฑฐ
// q๋ ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ iterator -
v.empty()
// v๊ฐ ๋น์์ผ๋ฉด(v.size() == 0) true ๋ฐํ
vector์ ๋ฉค๋ฒ ํ์
-
iterator
// ๋ฐ๋ณต์ ํ์
-
const_iterator
// const ๋ฐ๋ณต์ ํ์
-
reverse_iterator
// ์ญ ๋ฐ๋ณต์ ํ์
-
size_type
// index ๋๋ ์์์ ๊ฐ์ ๋ฑ์ ํ์
-
value_type
// ์์์ ํ์
vector ์ฌ์ฉ ์์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v; // intํ vector v ์ ์ธ
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
cout << "v์ ์์: ";
for (vector<int>::size_type i = 0; i < v.size(); i++)
cout << v[i] << ' ';
cout << endl;
cout << "v์ size: " << v.size() << endl;
cout << "v์ capacity: " << v.capacity() << endl;
return 0;
}
|
cs |
---------------์ถ๋ ฅ--------------
v์ ์์: 1 2 3 4 5
v์ size: 5
v์ capacity: 6
์ฐธ๊ณ : https://hyeonstorage.tistory.com/324
https://blockdmask.tistory.com/7
'Language > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++ / Algorithm] ์์ด(next_permutation) ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ์กฐํฉ(Combination) ๊ตฌํ๊ธฐ (4) | 2020.06.26 |
---|