从std::vector<std::function<...>>中删除std::函数的C++
在C++中,std::vector是一个动态数组容器,std::function是一个通用的函数封装器。要从std::vector<std::function<...>>中删除std::函数,可以使用std::remove_if函数结合lambda表达式来实现。
下面是一个示例代码:
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
int main() {
std::vector<std::function<void()>> functions;
// 添加一些函数到vector中
functions.push_back([]() { std::cout << "函数1" << std::endl; });
functions.push_back([]() { std::cout << "函数2" << std::endl; });
functions.push_back([]() { std::cout << "函数3" << std::endl; });
// 删除特定的函数
std::function<void()> functionToRemove = []() { std::cout << "函数2" << std::endl; };
functions.erase(std::remove_if(functions.begin(), functions.end(),
[&](const std::function<void()>& func) {
return func.target<void()>() == functionToRemove.target<void()>();
}),
functions.end());
// 执行剩余的函数
for (const auto& func : functions) {
func();
}
return 0;
}
在上面的示例代码中,我们首先创建了一个std::vector<std::function<void()>>,并向其中添加了三个函数。然后,我们定义了一个要删除的函数functionToRemove,并使用std::remove_if函数结合lambda表达式来删除vector中与functionToRemove相等的函数。最后,我们遍历剩余的函数并执行它们。
这是一个简单的示例,你可以根据实际需求进行修改和扩展。关于std::vector、std::function和std::remove_if等的更多详细信息,你可以参考C++标准库的相关文档。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云