[PS] Vector

정재훈·2022년 3월 13일
0

Problem Solving

목록 보기
5/17
post-thumbnail

1) Vector Lib

Vector란 배열처럼 따로 범위를 지정해주지 않고, 원하는 범위만큼 추가를 해줄 수 있다.
Vector을 사용하기 위해서는 Lib를 추가하여 사용하여야 합니다.

#include <vector>

vector을 사용하기 위해서는 자료형에 맞게 선언을 해줘야합니다.

vector<int> v;
vector<char> v;
vector<string> v;

// 구조체로 vector 선언 가능
Struct Node
{
	int a;
    char b;
};
vector<Node> v;

2) Vector 범위 및 초기화

vector는 범위를 따로 지정해주지 않아도 되지만, 초기화 해주기 위해서는 범위를 지정해줍니다.

// 범위 100만큼 1로 초기화
vector<int> v(100,1);  // 실행 1

// 범위를 10으로 조정하고 값을 2로 초기화
v = vecotr<int>(10,2)  // 실행 2

// 범위와 값 모두 초기화
v = vector<int>();  // 실행 3
결과1결과2결과3

vector의 2차원

// vector의 2차원 표현
vector<vector<int>> v;

3) Vector 함수들

push-back 함수

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

vector<int> v;

int main() {
	// v 벡터에 1 2 3 순서로 입력
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);

	for (int i = 0; i < v.size(); i++) {
		cout << v[i]<<" ";
	}

	return 0;
}

결과

v.begin() / v.end()

v.resize()
실행 1
다음 코드는 범위 10만큼 1로 초기화 한 후 범위를 3으로 축소하게 된다면 어떻게 될지 확인하겠습니다.

// 범위 10을 값 1로 초기화
	vector<int> v(10, 1);
	// 범위를 3으로 축소
	v.resize(3);
	
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << " ";
	}
	cout << endl;

실행2
만약 위 실행1과 반대되는 상황인 범위는 작게하고 범위를 늘리게 된다면 어떻게 되는지 확인해보겠습니다.

// 범위 3을 값 1로 초기화
	vector<int> v(3, 1);
	// 범위를 10으로 확장
	v.resize(10);
	
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << " ";
	}
	cout << endl;
결과1결과2

범위 10만큼 1로 초기화 한 후 범위를 3으로 축소하게 된다면 3을 제외한 나머지(7)부분은 삭제하고 범위 3만큼 남기게 됩니다.
범위 3만큼 1로 초기화 한 후 범위를 10으로 확장하게 된다면, 확장되는 7만큼의 범위는 0으로 초기화한 상태로 확장하게 된다.

erase() / pop_back() : 삭제

vector<int> v;

	for (int i = 1; i < 10; i++) {
		v.push_back(i);
	}
	// vector.erase(pos) : pos 위치에 data 및 공간 삭제
	v.erase(v.begin());

	// vector.pop_back() : 맨 뒤의 data를 삭제
	v.pop_back();

결과

swap

vector<int> v;
	vector<int> v2 = { 5,6,7,8,9 };

	v.swap(v2);

결과

profile
여러 방향으로 접근하는 개발자

0개의 댓글