Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] vector #1 본문
#include <iostream>
using namespace std;
#include <vector>
int main()
{
// STL (Standard Template Library)
// 프로그래밍 할 때 필요한 자료구조 / 알고리즘들을 템플릿으로 제공하는 라이브러리
// 컨테이너(Container) : 데이터를 저장하는 객체 (자료구조 Data Structure)
// vector (동적 배열)
// - vector의 동작 원리 (size/capacity)
// - 중간 삽입/삭제
// - 처음/끝 삽입/삭제
// - 임의 접근
// 동적 배열
/*int arr[100]; // 대충 예를 들어 이런 느낌
int* arr2 = new int[100];
delete arr2;
arr2 = new int[1000];*/
// 1) (여유분을 두고) 메모리를 할당한다
// 2) 여유분까지 꽉 찼으면, 메모리를 증설한다
// Q1) 여유분은 얼만큼이 적당한가
// Q2) 증설을 얼만큼 해야하는가
// Q3) 기존의 데이터를 어떻게 처리해야하는가
vector<int> v(1000, 0); // 생성자 자체에서 초기 크기 지정 가능, 초깃값 지정 가능
vector<int> v2 = v; // v에 있는 모든 특징을 v2에 복사 가능
//v.resize(1000);
cout << v.size() << " " << v.capacity() << endl;
// size (실제 사용 데이터 개수)
// 1 2 3 4 5 6 7....
//v.reserve(1000); // 이사비용이 매번 드는것을 방지하기 위해 필요양을 미리 잡아둠
// capacity (여유분을 포함한 용량 개수)
// 1 2 3 4 6 9 13 19 28 42 63....
for (int i = 0; i < 1000; i++)
{
//v[i] = 100; // 기존에 잡혀있는 영역을 접근하여 활용한다는 의미
v.push_back(100); // 데이터를 추가한다는 의미
cout << v.size() << " " << v.capacity() << endl;
}
v.front(); // 맨 처음에 있는 데이터를 꺼냄
v.back(); // 마지막에 있는 데이터를 꺼냄
v.pop_back(); // 데이터를 빼냄
v.clear(); // size가 줄어도 capacity는 그대로 유지됨
vector<int>().swap(v); // size가 줄었을 때 capacity까지 줄이고 싶을때 사용하는 방법. 임시 벡터를 생성하여 capacity를 줄이고 v벡터를 재생성 후 재이동
cout << v.size() << " " << v.capacity() << endl;
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] vector #3 (0) | 2023.05.29 |
---|---|
[C++] vector #2 (0) | 2023.05.29 |
[C++] 콜백 함수 (0) | 2023.05.18 |
[C++] 템플릿 기초 #2 (0) | 2023.05.03 |
[C++] 템플릿 기초 #1 (0) | 2023.05.03 |