기술면접을 위해 기초 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 |