STL 함수 개체는 C++11의 완벽한 전달 및 이동 의미 체계, C++14의 함수 포인터 캡슐화 및 일반 람다를 포함하여 크게 개선되었습니다. 이러한 개선 사항은 유용성, 효율성 및 유연성을 향상시킵니다. 예를 들어 일반 람다는 단순히 std::less{}를 사용하여 내림차순으로 정렬함으로써 정렬 함수 객체 작성을 단순화합니다.
C++ 11 및 C++ 14의 STL 함수 개체 개선
C++ 표준 라이브러리(STL)가 발전하는 동안 함수 개체가 크게 개선되었습니다. 이러한 개선 사항은 유용성, 효율성 및 유연성을 향상시키기 위해 설계되었습니다.
C++ 11의 개선 사항
코드 예:
struct Forwarder { template <typename ...Args> void operator()(Args&&... args) const { std::forward<Args>(args)...; // 完美转发参数 } };
코드 예:
struct Mover { std::string value; Mover(Mover&& other) noexcept : value(std::move(other.value)) { other.value.clear(); // 移出旧值 } };
C++ 14의 개선 사항
코드 예:
auto plus = std::function<int(int, int)>([](int a, int b) { return a + b; });
코드 예:
auto sort_by = [](const auto& a, const auto& b) { return a < b; };
실용 사례
학생 성적의 데이터 구조가 있다고 가정하고 이제 STL 함수 개체를 사용하여 성적을 정렬하려고 합니다.
C++ 11 코드:
std::vector<int> grades = {90, 85, 95, 88, 92}; std::sort(grades.begin(), grades.end(), [](int a, int b) { return a > b; }); // 降序排序
C++ 14 코드:
std::vector<int> grades = {90, 85, 95, 88, 92}; std::ranges::sort(grades, std::less{}); // 降序排序
보시다시피 C++ 14에 도입된 일반 람다는 정렬된 함수 개체 작성을 단순화합니다.
위 내용은 C++ 11 및 C++ 14의 STL 함수 개체가 개선되었나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!