Home > Backend Development > C++ > body text

Flexible use of function templates in C++ syntax

WBOY
Release: 2024-06-02 14:18:56
Original
768 people have browsed it

Flexible use of function templates in C++ syntax

Flexible use of function templates in C syntax

Function templates are a powerful feature in C that allow you to create functions that can be used for different data A set of codes for the type. This improves code reusability and enables you to write more versatile and maintainable code.

Grammar

The syntax of the function template is:

template<typename T>
T myFunction(T a, T b);
Copy after login

where:

  • template Indicates that a template function is being declared.
  • <typename T> Specify template parameters as type parameters.
  • T myFunction(T a, T b) is the function declaration, where T is the template parameter type.

Example

Let’s create a function template to calculate the maximum of two numbers:

template<typename T>
T max(T a, T b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}
Copy after login

This function template can be used Any data type, for example:

int x = max(1, 2); // 最大值为 2
double y = max(3.14, 1.618); // 最大值为 3.14
Copy after login

Type constraints

Sometimes you may need to specify certain constraints that a template parameter must satisfy. This can be done using the class or typename keyword in front of the typename keyword, as shown below:

template<typename T>
requires std::is_integral_v<T> // 约束 T 为整数类型
T myFunction(T a, T b);
Copy after login

Multiple at compile time Morphic

Function templates are resolved at compile time, which means that the template parameters are not available at runtime. This allows the compiler to generate efficient versions of code specific to a given data type.

Practical Case

Consider the following code, which adds up all the elements in an array:

int sumArray(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum;
}
Copy after login

Using function templates, we can Data types create a generic sumArray function:

template<typename T>
T sumArray(T arr[], int size) {
    T sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum;
}
Copy after login

This allows us to sum integers, floating point numbers, or any other data type that supports addition:

int arr1[] = {1, 2, 3, 4, 5};
int sum1 = sumArray(arr1, sizeof(arr1) / sizeof(int)); // 15

float arr2[] = {1.2, 3.4, 5.6, 7.8, 9.1};
float sum2 = sumArray(arr2, sizeof(arr2) / sizeof(float)); // 27.1
Copy after login

Conclusion

Function templates are a powerful tool that allow you to create highly reusable and efficient code. Understanding the syntax, type constraints, and compile-time polymorphism of function templates will enable you to take full advantage of this feature in C.

The above is the detailed content of Flexible use of function templates in C++ syntax. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template