c++

c++ vector

hojung 2022. 3. 16.
728x90
반응형

1. 벡터란?

코딩테스트를 준비하면서 나는 c++를 사용하기로 했다.

이 때 가장 중요하게 생각했던 것이 데이터를 담는 라이브러리 및 자료형인데

배열은 처리하는 속도가 빠른 반면 크기가 한정되어 있어 처음부터 크기가 정해져있지 않은 문제에서는 문제가 발생할 수 있다. 

 

벡터를 선언하는 것은 간단하다. 

우선 vector 라이브러리를 추가해준다. 

#include <vector>

벡터를 사용할 때

  •  크기 변경 가능 o
  •  중간 삽입, 삭제 용이 X
  •  순차 접근 가능 o
  •  랜덤 접근 가능 o

2. 벡터의 생성 및 초기화

//1차원 벡터
vector <int> vec1;
vector <char> vec2;
vector <string> vec3;

//1차원 사용자 정의형 벡터
struct user {
	int id;
	string name;
};

// 사용자 정의형 vector
vector<user> v4(3, {1,"정호"});

//2차원 벡터
vector<vector<int>> A;
vector<vector<char>> B;
vector<vector<string>> C;
//1차원 벡터의 초기화 1
//vector<자료형> 벡터이름 (개수, 기본 값);
vector<int> v1(3, 5);
vector<char> v2(10, 'a');

//1차원 벡터의 초기화2
//vector<자료형> 벡터이름 {요소들}
vector<int> vec1 = {1,2,3,4};
vector<char> vec2 = {'a','b','c'};

//2차원 벡터의 초기화
//vector<vector<자료형>> 벡터이름 (가로 개수, vector<자료형>(세로 개수, 기본 값)
vector<vector<int>> A (10, vector<int>(5,2));
vector<vector<char>>B (10, vector<char>(10, 'a'));

3. 벡터의 내장함수

	//1차원 벡터 내장함수
	cout << "iterator함수 insert" << endl;
	v1.insert(v1.begin() + 5, 3);
	for (int i = 0; i < v1.size(); i++)
	{
		cout << v1[i] << " ";
	}
	cout << endl;

	cout << "iterator함수 erase" << endl;
	v1.erase(v1.begin() + 4);
	for (int i = 0; i < v1.size(); i++)
	{
		cout << v1[i] << " ";
	}
	cout << endl;

	cout << "2차원 int vector " << endl;
	//2차원 벡터 출력
	for (int i = 0; i < 5; i++) {
		for (int u = 0; u < 4; u++)
		{
			cout << vec1[i][u] << " ";
		}
		printf("\n");
	}

4. 벡터의 iterator

iterator 란 벡터에 접근하기 위한 포인터와 같은 객체라고 볼 수 있다. 

iterator를 얻기 위해서는 내장함수들을 사용해야하는데

  • begin() -vector의 첫번째 원소
  • end() - vector 의 마지막 원소
  • insert(v.begin() + 위치, 넣고자 하는 값)
  • erase(v.begin() + 위치)

등의 내장함수는 모두 iterator개념을 이용하여 사용해야 한다.  

728x90
반응형

댓글