개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.15 14:41

DsSet::slice 문제점 이해 요청

목록
  • 엘라스틱서치광 오래 전 2025.06.15 14:41 인기
  • 127
    1
제가 공부하고 있는 DsSet::slice에 대해 질문을 드리려 합니다.

DsSet::slice를 사용하여 특정 범위의 원소를 추출할 때,
원래 DsSet의 원소 개수가 변경되어도 slice된 원소 개수는 변하지 않습니다.
이러한 특성에 대해 더 자세히 알고 싶습니다.

DsSet::slice를 사용하여 원소 개수가 변경된 후 slice된 원소의 개수가 어떻게 되는지
알 수 있는 방법이 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    DsSet::slice는 원래 DsSet의 원소 개수가 변경되어도 slice된 원소 개수는 변하지 않는다. 이는 slice된 원소는 원래 DsSet의 원소의 참조를 저장하기 때문이다.

    DsSet::slice를 사용하여 원소 개수가 변경된 후 slice된 원소의 개수를 확인하려면, slice된 원소의 개수를 직접 계산하여야 한다.

    예를 들어, DsSet::slice를 사용하여 0부터 5까지의 원소를 추출한 후, 원래 DsSet의 원소 개수가 변경되었다고 가정하자.

    #hostingforum.kr
    cpp
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        DsSet set;
    
        for (int i = 0; i < 10; i++) {
    
            set.insert(i);
    
        }
    
    
    
        DsSet::iterator it = set.begin();
    
        for (int i = 0; i < 6; i++) {
    
            it++;
    
        }
    
    
    
        DsSet slice = set.slice(it - set.begin(), 6);
    
    
    
        // 원래 DsSet의 원소 개수를 변경한다.
    
        set.erase(set.begin(), set.end());
    
    
    
        // slice된 원소의 개수를 직접 계산한다.
    
        int sliceSize = 0;
    
        for (DsSet::iterator it = slice.begin(); it != slice.end(); it++) {
    
            sliceSize++;
    
        }
    
    
    
        std::cout << "slice된 원소의 개수: " << sliceSize << std::endl;
    
    
    
        return 0;
    
    }
    
    


    위의 예제에서, slice된 원소의 개수는 6이지만, 원래 DsSet의 원소 개수는 0이된다.

    따라서, DsSet::slice를 사용하여 원소 개수가 변경된 후 slice된 원소의 개수를 확인하려면, slice된 원소의 개수를 직접 계산하여야 한다.

    2025-06-15 14:42

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,038건 / 1 페이지

검색

게시물 검색