반응형
std::bind1st
와std::bind2nd
는C++98
에서 함수 객체의 첫 번째 또는 두 번째 인자를 고정 시키는 기능을 제공했습니다.- 하지만 몇 가지 문제점이 있었습니다:
- 제한된 기능 : 첫 번째나 두 번째 인자만 고정할 수 있음
- 가독성 저하 : 코드가 복잡하고 직관적이지 않음
- 타입 추론 어려움 : 가끔 의도한 동작이 명확하지 않음
- 새로운 대체 기능 등장 :
C++11
이후std::bind
와 람다(lambda
, 익명 함수)가 도입되면서 동일한 기능을 더 간결하고 유연하게 구현할 수 있게 되었음
- 결국 이러한 이유로
std::bind1st
와std::bind2nd
는C++17
표준에서 제거 되었습니다.
-
cpp
#include <iostream> #include <functional> #include <vector> #include <algorithm> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // 3보다 큰 값 찾기 auto it = std::find_if( numbers.begin(), numbers.end(), std::bind2nd( std::greater<int>(), 3 ) ); if (it != numbers.end()) { std::cout << "찾은 값: " << *it << std::endl; // 출력: 4 } return 0; }
-
cpp
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // 3보다 큰 값 찾기 auto it = std::find_if( numbers.begin(), numbers.end(), [](int value) { return value > 3; } ); if (it != numbers.end()) { std::cout << "찾은 값: " << *it << std::endl; // 출력: 4 } return 0; }
-
std::bind1st
와std::bind2nd
는 제한적인 기능과 가독성 문제로 인해C++17
에서 제거되었으며, 현재는std::bind
나 람다 함수를 사용하는 것이 권장됩니다. -
람다는 가독성과 유연성을 모두 충족시키는 현대적인 대안입니다.
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
- 일부 모바일 환경에서는 ❤️ 버튼이 보이지 않습니다.
728x90
반응형
'C C++' 카테고리의 다른 글
C++17에서 std::mem_fun과 std::mem_fun_ref가 제거된 이유 (0) | 2025.03.23 |
---|---|
C++17에서 std::ptr_fun이 삭제된 이유 (0) | 2025.03.23 |
Visual Studio C++ 라이브러리 패키지 매니저 vcpkg 설치 및 자동 업데이트 가이드 (0) | 2025.03.22 |
C++ 표준에서 제거된 주요 항목 목록 (0) | 2025.03.21 |
C++에서 구조체(struct)를 다양하게 선언하는 방법 (0) | 2025.03.21 |