泛化函数是一种能够适用于不同数据类型和操作的函数。在编写泛化函数时,我们可以使用C++的模板来实现。其中,modify_if
是一个泛化函数,它可以根据特定的条件修改容器中的元素。
下面是一个示例的modify_if
泛化函数的实现:
#include <iostream>
#include <vector>
#include <algorithm>
template <typename Container, typename Predicate, typename Modifier>
void modify_if(Container& container, Predicate pred, Modifier mod) {
for (auto& element : container) {
if (pred(element)) {
mod(element);
}
}
}
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// 定义一个谓词函数,用于判断元素是否为偶数
auto is_even = [](int num) { return num % 2 == 0; };
// 定义一个修改函数,用于将元素加倍
auto double_num = [](int& num) { num *= 2; };
// 使用modify_if函数将偶数元素加倍
modify_if(numbers, is_even, double_num);
// 输出修改后的容器元素
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在上述示例中,我们定义了一个modify_if
泛化函数,它接受三个参数:容器container
、谓词函数pred
和修改函数mod
。函数通过遍历容器中的每个元素,如果满足谓词函数的条件,则调用修改函数对该元素进行修改。
在main
函数中,我们使用modify_if
函数将容器numbers
中的偶数元素加倍。首先,我们定义了一个谓词函数is_even
,用于判断元素是否为偶数。然后,我们定义了一个修改函数double_num
,用于将元素加倍。最后,我们调用modify_if
函数,传入容器、谓词函数和修改函数,实现对偶数元素的加倍操作。
输出结果为:2 2 6 4 10,表示容器中的偶数元素已经被加倍。
腾讯云相关产品和产品介绍链接地址:
请注意,以上仅为示例产品,实际应根据具体需求选择适合的腾讯云产品。
领取专属 10元无门槛券
手把手带您无忧上云