nodejs c++ 有变量stdvectorPersistentFunction检查一个LocalFunction在上面的vector里面如果存在就删除
可以使用std::find_if和std::remove_if函数来完成这个任务。
首先,定义一个lambda函数来作为查找条件:
auto isEqual = [&](const Persistent<Function> &f) {
return f.Get(isolate) == function;
};
这个lambda函数接受一个Persistent
接着,使用std::find_if函数在vector中查找与function相等的元素:
auto it = std::find_if(vec.begin(), vec.end(), isEqual);
这个函数接受两个迭代器参数,分别指向vector的起始位置和终止位置,以及一个查找条件,返回一个指向第一个符合条件的元素的迭代器,如果没有找到,返回终止迭代器。
最后,使用std::remove_if函数删除找到的元素:
if (it != vec.end()) {
vec.erase(std::remove_if(vec.begin(), vec.end(), isEqual), vec.end());
}
这个函数接受两个迭代器参数,分别指向vector的起始位置和终止位置,以及一个删除条件,返回一个指向最后一个被删除元素的迭代器,如果没有元素被删除,返回终止迭代器。在这里,我们将std::remove_if的返回值作为std::vector的erase函数的起始位置参数来删除元素。
完整的代码如下:
auto isEqual = [&](const Persistent<Function> &f) {
return f.Get(isolate) == function;
};
auto it = std::find_if(vec.begin(), vec.end(), isEqual);
if (it != vec.end()) {
vec.erase(std::remove_if(vec.begin(), vec.end(), isEqual), vec.end());
}
``
原文地址: https://www.cveoy.top/t/topic/fIMH 著作权归作者所有。请勿转载和采集!