그냥 게임개발자
[C++] vector - 함수들 본문
vector의 함수들은 여러가지가 있어요.
push_back
pop_back
erase
find
clear
fill
이렇게 자주 사용하는 함수들이 있는데 물론 더 있는데 그건 직접 하면서 공부해보길!
재미없는 것부터 배우면 재미가 없어요.
어차피 배울 거 산더미인데
쉬운 것부터 배워요
쉬운 것부터

저것보다 더 많을지도
그래서 하나하나 간단명료하게 설명하겠습니다.
근데 참 보면 평일에 쓰는 글들과 주말에 쓰는 글들의 퀄리티를 보면 주말이 확실히 더 좋은 듯 싶어요.
push_back()
vector의 뒤에서부터 요소를 더해요.
물론 emplace_back()도 뒤에서부터 요소를 더하는 함수입니다.
emplcae_back()이 더 빠른데 시간차이는 그리 엄청나지는 않으니 편한 거 사용하시면 될 듯합니다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
vec.push_back(1);
for (int i : vec)
cout << i << ' ';
cout << '\n';
vec.emplace_back(2);
for (int i : vec)
cout << i << ' ';
cout << '\n';
return 0;
}
음 결과물은 안봐도 보이시죠
1
1, 2
이렇게 나옵니다.
pop_back()
다음은 pop_back입니다.
이것은 엄청 간단
vector의 맨 뒤에있는 요소를 제거합니다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
vec.push_back(1);
for (int i : vec)
cout << i << ' ';
vec.pop_back();
for (int i : vec)
cout << i << ' ';
cout << '\n';
return 0;
}
이러면 값은
1
이러고 끝나겠죠.
erase()
erase는 vector의 요소를 지우는 역할을 하는 함수입니다.
예를들어 한 요소만 지운다면 erase(이터레이터)로 쓰이지만 어디서 어디까지 지운다라는것으로 사용한다면
erase(from, to)로 사용하면 됩니다.
물론 to에 5를 넣었다면 4번째까지 지워집니다.
to 까지가 아닌 to 이전까지 지우는 것으로 생각하면 편합니다.
한 번 erase를 사용해봅시다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
for (int i = 1; i <= 5; ++i)
{
vec.push_back(i);
}
// 1, 2, 3, 4, 5
for (int i : vec)
cout << i << " ";
cout << '\n';
// 3의 이터레이터를 찾음
vector<int>::iterator findIt = find(vec.begin(), vec.end(), 3);
// 못찾을 수도 있으니 검사
if (findIt == vec.end())
{
cout << "Not Found FindIt " << '\n';
return 0;
}
vec.erase(findIt);
// 1, 2, 4, 5
for (int i : vec)
cout << i << " ";
cout << '\n';
vec.erase(vec.begin(), vec.begin() + 2);
// 4, 5
for (int i : vec)
cout << i << " ";
cout << '\n';
}
예상 결과값을 주석으로 처리해봤는데 맞는지 확인해봅시다.

어우 대견해라.
그리고 지금 저기서는 find라는 함수를 통해 이터레이터를 반환했지만
이렇게 해도 된다.
vec.erase(vec.begin() + 2);
시작점부터 2번째 위치 0, 1, 2 번째의 값을 지운다.
이런식으로 활용해도 좋습니다.

어우 간단 명료하게 쓸려고 했는데 뭔가 길어지네요.
erase의 내부를 보면 이런식이에요.
iterator erase (const_iterator position); // 한 요소
iterator erase (const_iterator first, const_iterator last); // from - to
find(from, to, value)
vector의 함수는 아니고 STL 함수입니다.
from - to에서 value를 찾아 이터레이터를 반환하는 함수입니다.
vector내의 요소들을 찾고 싶을 때 이 함수를 사용하면 됩니다.
O(n)의 시간 복잡도를 가져요.
사용 방식은 아래와 같아요.
auto findIt = find(from, to, value);
clear()
vector의 모든 요소를 지워요.
capacity랑은 달라요.
vector의 요소를 지우는 거지 vector가 할당한 메모리를 지우는게 아니에요!!
fill(from, to, value)
vector에 어떠한 value값을 할당하고 싶으면 fill을 써서 채웁니다.
fill(from, to, value);
아 여기서 또한 from ~ to 지만 to는 포함되지 않고 이전까지만 채웁니다.
끝~
'내 개인적인 공부 > 자료구조' 카테고리의 다른 글
vector를 통해서 2차원 배열 만들기 (0) | 2024.04.13 |
---|---|
vector의 정적할당? (0) | 2024.04.13 |
for in range (0) | 2024.04.13 |
C++ - vector (1) | 2024.04.13 |
자료구조란? (0) | 2024.04.12 |