본문 바로가기

그 외 코드/C, C++

[C++] vector 사용 법

728x90
반응형

라이브러리 추가

#include <vector>
using namespace std;

성질

  • 맨 뒤에서 삽입과 삭제가 가능
  • 중간에 값을 삽입, 삭제할 수 있음

선언

vector<int> v1;
vector<int> v2(5); // 사이즈 5인 벡터 v2
vector<int> v3(5,0); // 0으로 초기화 된 사이즈 5인 벡터 v3
vector<int> v4(v1); // v1을 복사한 벡터 v4
vector<vector<int>> v2;
vector<pair<int,int>> v3;

사용

  • 삽입

    • v1.push_back(a);
    • v2[3] = a;
    • q = v.insert(p,x); p가 가리키는 자리에 x값 삽입. q는 삽입한 원소 가리키는 반복자
  • 제거

    • v1.pop_back();

    • q = v1.erase(p); p가 가르키는 자리 원소 지움. q는 다음 원소 가리키는 반복자

      v1.erase(v.begin()+4); 5번째 원소 지움
      v1.erase(v.begin()+2, v.begin()+5); 3번째부터 5번째 원소 지움

  • 참조

    • v2.front(); 맨 앞의 원소 참조
    • v2.back(); 맨 끝의 원소 참조
    • v2.at(i); i번째 원소 참조
    • p = v2.begin(); 첫 원소 반복자 반환
    • p = v2.end(); 끝 표시 반복자 반환 (마지막 요소의 다음 요소)
  • 크기

    • v1.size();

iterator 사용

vector<int>::iterator iter=v.begin();

정렬

#include <algorithm>
#include <vector>
vector<int> v1;
sort(v1.begin(),v1.end());
vector< pair<int, int> > v3;

bool cmp(const pair<int, int> &a, const pair<int, int> &b) {
 return a.first < b.first;
}

sort(v3.begin(), v3.end(), cmp);

//lower, upper bound 사용법
auto left = upper_bound(v3.begin(), v3.end(), v3[i], cmp);
auto right = lower_bound(v3.begin(), v3.end(), v3[j], cmp);
728x90
반응형