Study note/Coding test

Vector 문법 정리 (C++)

공대 아로마 2024. 4. 12. 17:21

기술면접을 위해 기초 CS에 대한 복습중이다.
공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다.
내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의!

Vector 기본 문법

// 크기는 3, 모든 값은 10000으로 초기화
vector<int> v(3, 10000);

// index 2에 10을 추가
v.insert(v.begin() + 2, 10);

// 거꾸로 뒤집기
reverse(v.begin(), v.end());

값 출력 방법

// 방법1: 배열처럼 접근해서 loop로 출력
    for (int i = 0 ; i < vec.size(); i++)
        cout << vec[i] << endl;

// 방법2: iterator를 사용해서 loop로 출력
    for (auto iter = vec.begin(); iter != vec.end(); iter++)
        cout << *iter << endl;

값 찾기

  • find 함수로 iterator를 찾는다.
vector<string>::iterator iter = find(str.begin(), str.end(), "aroma");

// 값 대입(변경)
*iter = "study";

// 값 출력
cout << *iter; 
  • 중복값이 있을 때 여러 개를 찾으려면 loop 이용하고, 없을 때까지 찾는다.
// 없으면 iter가 끝으로 가있기 때문에 이걸로 판별한다.
if (iter == str.end()) break;
  • 맨 처음 값과 마지막 값
iter = vec.begin();
iter = vec.end() - 1;    //end()는 마지막 값 다음이라 -1으로 해야함

erase 시 주의할 부분

  • erase(vec.begin() + i) 라고 하면, 첫 원소로부터 i번째 원소를 지운다. i가 4면, 시작 + 4이므로 5번째, 즉 vec[4]를 지운다.
  • erase를 하면 자동으로 뒤의 값들이 앞으로 당겨져온다.
  • erase를 성공하면 그 return값은 삭제한 그 바로 다음 iterator이다. iterator를 자동으로 증가시켜주기 때문에 잘 알고 설계해야 한다.

부분 vector를 구할 때

  • subarray 만들듯이 부분 벡터를 만들 때 첫 파라미터는 포함, 뒤 파라미터는 불포함이다.
    // i번째부터 j번째까지: 인덱스로는 [i - 1]포함 ~ [j]불포함까지
    vector<int> subarr = vector<int>(arr.begin() + i - 1, arr.begin() + j);

복사해서 새로운 vector를 만들고 싶을 때: assign

  • 예시: hash를 vector형태로 assign할 때
unordered_map<string, int> hash1;
vector<pair<string, int>> arr1;

arr1.assign(hash1.begin(), hash1.end());

참고: pop_front가 가능한 vector?

  • vector와 거의 비슷한 역할을 하는 deque를 사용하면 된다.
  • deque: double ended queue
  • 헤더는 <deque> (<queue>에서 <deque>를 포함하고 있으므로 queue를 사용해도 된다.)

'Study note > Coding test' 카테고리의 다른 글

그리디 & 구현  (0) 2024.04.12
코딩 테스트에서 주의할 점  (1) 2024.04.12
정렬 알고리즘(Sort)  (0) 2024.04.12
Heap & priority_queue  (0) 2024.04.12
코딩 테스트에서 자주 쓰이는 기본 문법들  (0) 2024.04.12