Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

세트 STL에서 삭제 및 찾기를 삽입하는 C++ 프로그램

<시간/>

정수형 데이터에 대해 설정된 데이터 구조가 있다고 가정합니다. 표준 입력에서 n개의 쿼리를 제공합니다. 각 쿼리(각 줄에)에는 두 개의 요소가 있습니다. 첫 번째는 연산자이고 두 번째는 요소입니다. 작업은 아래와 같습니다 -

  • 끼워 넣다. 이렇게 하면 요소가 집합에 삽입됩니다.

  • 삭제. 이렇게 하면 집합에서 요소가 삭제됩니다(존재하는 경우)

  • 검색. 이렇게 하면 요소가 집합으로 검색되고, 존재하는 경우 예가 표시되고, 그렇지 않으면 아니요가 표시됩니다.

따라서 입력이 n =7과 같으면 쿼리 =[[1,5],[1,8],[1,3],[2,8],[1,9],[3,8], [3,3]], 8이 세트에 없고 3이 있기 때문에 출력은 [아니오, 예]가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 한 세트 정의
  • s를 통해 반복할 하나의 집합 반복자 'it' 정의
  • q :=쿼리 수
  • q가 0이 아닌 동안 각 반복 후에 q를 감소시키고 다음을 수행합니다.
    • 쿼리 유형 qt 사용
    • qt용
      • qt가 1이면 x s를 삽입합니다.
        • 블록에서 나오세요
      • qt가 2이면 s
          에서 x를 삭제합니다.
        • 블록에서 나오세요
      • qt가 3인 경우,
        • 그 안에서 find(x) 호출
        • s의 마지막 요소와 같은 경우:
          • 아니요 인쇄
        • 그렇지 않으면
          • 예 인쇄
        • 블록에서 나오세요

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <iostream>
#include <set>
using namespace std;
int main(){
    set<int> s;
    set<int>::iterator it;
    int q,x;
    int qt;
    cin >> q;
    while(q--){
        cin>>qt>>x;
        switch(qt){
            case 1:s.insert(x);
                    break;
            case 2:s.erase(x);
                    break;
            case 3:it=s.find(x);
                    if(it==s.end())
                        cout<<"No"<<endl;
                    else
                        cout<<"Yes"<<endl;
                    break;
        }
    }
    return 0;
}

입력

7
1 5
1 8
1 3
2 8
1 9
3 8
3 3

출력

No
Yes