>백엔드 개발 >C++ >세트 STL에서 삽입, 삭제 및 검색을 위한 C++ 프로그램

세트 STL에서 삽입, 삭제 및 검색을 위한 C++ 프로그램

WBOY
WBOY앞으로
2023-08-27 23:29:021430검색

C++程序用于在set STL中插入、删除和查找

정수형 데이터의 컬렉션 데이터 구조가 있다고 가정해 보겠습니다. 표준 입력에서는 n개의 쿼리를 제공합니다. 각 쿼리(각 행)에는 두 개의 요소가 있습니다. 첫 번째는 연산자이고 두 번째는 요소입니다. 방법은 다음과 같습니다.

  • 삽입. 그러면 요소가 컬렉션에 삽입되고

  • 제거됩니다. 컬렉션에 요소가 있으면 해당 요소가 제거됩니다.

  • 검색. 컬렉션에서 해당 요소를 검색하여 해당 요소가 있으면 "예"를 표시하고 그렇지 않으면 "아니요"를 표시합니다.

따라서 입력이 n = 7과 같은 경우 쿼리 = [[1,5],[1,8],[1,3],[2,8],[1,9], [3 ,8],[3,3]]이면 출력은 [No, Yes]가 됩니다. 왜냐하면 8은 집합에 존재하지 않지만 3은 존재하기 때문입니다.

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

  • 집합 s
  • s
  • q := 쿼리 번호를 반복할 반복자 집합 "it"을 정의합니다.
  • q가 0이 아닌 경우, 각 반복 후에 q를 줄이고 다음을 수행합니다.
    • 쿼리 유형 qt
    • 를 qt로 가져오고
      • qt가 1이면 블록에서 x s
        • 를 삽입하고
      • qt가 2이면 s에서 x 삭제
        • 블록 외부
      • qt가 3이면,
        • 그 안에서 find(x)를 호출합니다.
        • s의 마지막 요소와 동일하면:
          • NO를 인쇄합니다.
        • 그렇지 않으면
          • print YES
        • out of the block

예제

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

#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;
}

Input

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

Output

No
Yes

위 내용은 세트 STL에서 삽입, 삭제 및 검색을 위한 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제