STL 함수 개체를 사용하면 다음 단계를 포함하여 재사용성이 향상될 수 있습니다. 함수 개체 인터페이스 정의(클래스를 만들고 std::unary_function 또는 std::binary_function에서 상속) 오버로드된 연산자()에서 함수 동작을 정의하기 위해 연산자()를 오버로드합니다. ) STL 알고리즘을 통해 함수 개체 사용(예: std::transform)
STL 함수 개체를 사용하여 코드 재사용성 향상
STL 함수 개체는 호출 가능한 클래스이므로 함수형 프로그래밍과 개체 지향 프로그래밍을 결합할 수 있습니다. . 함수 개체에 코드 논리를 캡슐화하면 재사용성과 캡슐화를 향상시킬 수 있습니다.
단계:
std::unary_function
또는 std::binary_function
에서 상속되는 클래스를 만듭니다. 함수 동작을 정의하려면 operator()
를 오버로드하세요. std::unary_function
或 std::binary_function
。重载 operator()
以定义函数行为。operator()
中,实现所需的功能。std::transform
或 std::for_each
这样的 STL 算法来应用函数对象。示例:
假设我们想要创建一个函数对象来计算字符串的长度:
class StringLength { public: int operator()(const std::string& str) { return str.length(); } }; int main() { std::vector<std::string> names = { "John", "Mary", "Bob" }; std::vector<int> lengths; std::transform(names.begin(), names.end(), std::back_inserter(lengths), StringLength()); for (int length : lengths) { std::cout << length << " "; // 输出:4 4 3 } std::cout << "\n"; return 0; }
在这个例子中,StringLength
类是一个函数对象,实现了计算字符串长度的逻辑。我们通过 std::transform
将它应用到字符串向量 names
上,将计算的长度存储到 lengths
오버로드된 operator()
에서 필요한 함수를 구현합니다.
std::transform
또는 std::for_each
와 같은 STL 알고리즘을 사용하여 함수 개체를 적용할 수 있습니다. 🎜🎜예: 🎜🎜🎜문자열의 길이를 계산하는 함수 개체를 생성한다고 가정해 보겠습니다. 🎜rrreee🎜이 예에서 StringLength
클래스는 함수 문자열의 길이를 계산하는 논리를 구현하는 개체입니다. 이를 std::transform
을 통해 문자열 벡터 names
에 적용하고 계산된 길이를 lengths
벡터에 저장합니다. 🎜🎜사용자 정의 함수 개체를 사용하면 코드 재사용이 가능하고 문자열 길이 계산 논리를 다양한 문자열 컬렉션에 쉽게 적용할 수 있습니다. 🎜위 내용은 코드 재사용성을 향상시키기 위해 사용자 정의 STL 함수 개체를 디자인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!