🙇‍♀️Vector


🪐Vector

#include <iostream>
using namespace std;
#include <vector>

// 주제 : Vector

int main()
{
	// STL (Standard Template Library)
	// 프로그래밍할 때 필요한 자료구조/알고리즘들을
	// 템플릿으로 제공하는 라이브러리

	// 컨테이너(Container) : 데이터 저장하는 객체 (자료구조 Data Structure)

	// vector (동적 배열)
	// - vector의 동작 원리 (size/capacity)
	// - 중간 삽입/삭제
	// - 처음/끝 삽입/삭제
	// - 임의 접근

	// 배열
	const int MAX_SIZE = 10;
	int arr[MAX_SIZE] = {};

	for (int i = 0; i < MAX_SIZE; i++)
		arr[i] = i;

	for (int i = 0; i < MAX_SIZE; i++)
		cout << arr[i] << endl;


	// 동적 배열
	// 매우 매우 중요한 개념 -> 어떤 마법을 부렸길래 배열을 '유동적으로' 사용한 것인가?

	// 1) (여유분을 두고) 메모리를 할당한다
	// 2) 여유분까지 꽉 찼으면, 메모리를 증설한다

	// Q1) 여유분은 얼만큼이 적당할까?
	// Q2) 증설을 얼만큼 해야 할까?
	// Q3) 기존의 데이터를 어떻게 처리할까?

	vector<int> v;

	//v.resize(500);
	// size (실제 사용 데이터 개수)
	// 1 2 3 4 5 6 7 ...
	
	// capacity (여유분을 포함한 용량 개수)
	// 1 2 3 4 5 6 7 ...
	// 1 2 3 4 6 9 13 19 28 42 63 ...

	v.reserve(500);

	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();
	vector<int>().swap(v); // capacity 0 초기화
	cout << v.size() << " " << v.capacity() << endl;

	return 0;
}

태그:

카테고리:

업데이트: