개발자 Q&A

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

2025.06.20 18:11

DsVector::filter 관련 질문

목록
  • 노드장인 1일 전 2025.06.20 18:11
  • 6
    1
DsVector::filter 메소드를 사용하여 특정 조건에 맞는 요소를 필터링 하는데, 다음과 같이 코드를 작성했습니다.

cpp

DsVector vec = {1, 2, 3, 4, 5};

DsVector filteredVec = vec.filter([](int num) { return num > 3; });



filter 메소드의 lambda 함수에서 참조형 매개변수인 num을 사용하여 조건을 검사합니다. 하지만, 이 코드에서 num은 const int 타입의 매개변수로 선언되는데, 참조형 매개변수인 num은 const int& 타입으로 선언되어야 하는 것 아닌가요?

위 코드의 num은 왜 const int 타입으로 선언되었는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    DsVector::filter 메소드의 lambda 함수에서 num은 const int 타입의 매개변수로 선언된 이유는, lambda 함수 내부에서 num을 변경하지 않기 때문입니다.

    const int 타입의 매개변수는 값이 변경되지 않음을 의미하며, const int& 타입의 매개변수는 값을 변경할 수 있음을 의미합니다.

    DsVector::filter 메소드의 lambda 함수에서는 num을 변경하지 않기 때문에 const int 타입의 매개변수로 선언되어 안전성을 보장합니다.

    만약 lambda 함수 내부에서 num을 변경해야 한다면, const int& 타입의 매개변수로 선언해야 합니다.

    하지만, DsVector::filter 메소드의 lambda 함수 내부에서 num을 변경하는 경우는 없습니다. 따라서 const int 타입의 매개변수로 선언되어 안전성을 보장합니다.

    2025-06-20 18:13

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

검색

게시물 검색