알고리즘 문제를 풀다보니 내가 생각보다 기초가 매우 부실하다는 것을 알게 되었다.
지금 푸는 문제들도 물론 높은 수준의 문제들은 아니지만
개념부터 확실히 알고가기 위해 글을 작성한다.
이번에 알아볼 것은 가장 많이 사용하는 컨테이너 중 하나인
vector 이다.
C++의 vector는
C++ 표준라이브러리(Standard Template Library)에 있는 컨테이너로 사용자가 사용하기 편하게 정의된 class이다.
vector를 생성하면 heap(힙)메모리에 생성되며 동적할당된다.
일반 배열과는 다르게 동적할당(힙)을 사용하므로 주로 입력값이 몇개인지 알지 못할 때 주로 사용된다
속도적인 측면에서 array(배열)에 비해 성능은 떨어지지만 메모리를 효율적으로 관리하고 예외처리가 쉽다는 장점이 있어
많이 사용하고 있다.
#include <iostream>
#include <iostream>
#include <vector> // 벡터를 사용하기 위해 vector를 include 하여준다.
using namespace std;
int main()
{
vector<int> vec; // vector<자료형> 이름; 으로 선언 할 수 있다.
vec.push_back(1); // 벡터에 1을 추가한다.
vec.push_back(2); // 벡터에 2을 추가한다.
cout << "삭제전 front: " << vec.front() << endl; // 벡터의 가장 앞 부분의 데이터
cout << "삭제전 back: " << vec.back() << endl; // 벡터의 가장 마지막 부분의 데이터
vec.pop_back(); // 벡터의 가장 마지막 부분(vec.end())의 데이터를 지운다.
cout << "삭제후 front: " << vec.front();
cout << "삭제후 back: " << vec.back();
vec.clear(); //벡터의 모든 요소 삭제
cout << "전부 삭제후 front: " << vec.front(); //clear를 통해 모든 요소를 삭제하였으므로 front나 back에 관계없이 아무 값도 출력되지 않는다.
cout << "전부 삭제후 back: " << vec.back(); //clear를 통해 모든 요소를 삭제하였으므로 front나 back에 관계없이 아무 값도 출력되지 않는다.
}
이 외에도 insert나 erase같은 함수들도 자주 사용된다.
vector를 사용하는 백준문제 풀어보기
이 문제를 해결하였다면 기초적인 vector사용법은 모두 알았다고 할 수 있다.