본문 바로가기
C++

반복문에서의 Vector 요소 삭제

by _은하별사탕_ 2020. 5. 22.

 

2020 카카오 인턴십 문제를 풀다가 vector 요소 삭제때문에 많은 시간을 허비했던지라..ㅠㅠ

다시 실수하지 말자 겸 기록한다

 

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> basket;

    //1~20까지 basket에 넣음
    for(int i = 1; i <= 20; i++) {
        basket.push_back(i);
    }

    //print
    for(vector<int>::iterator it = basket.begin(); it != basket.end(); it++) {
        cout << *it << " ";
    }

    cout << endl;

    //홀수일 경우 삭제
    for(vector<int>::iterator it = basket.begin(); it != basket.end();) {
        //iterator는 원소값을 가리키는 포인터
        if(*it % 2 == 1) {
            //원소를 지울 경우 다음 원소를 가리키게 됨
            it = basket.erase(it);
        }
        else {
            //지우지 않을 경우 다음 포인터로
            it++;
        }
    }

    //print
    for(vector<int>::iterator it = basket.begin(); it != basket.end(); it++) {
        cout << *it << " ";
    }
}

 

 

결과

- 1~20까지의 숫자들 중에서 홀수들이 모두 삭제되어 올바르게 출력됨

'C++' 카테고리의 다른 글

VSCode 파일 소스을(를) 열 수 없습니다.  (2) 2020.05.28
Visual Code 환경 설정  (0) 2020.05.21