可以使用std::find_if和std::remove_if函数来完成这个任务。

首先,定义一个lambda函数来作为查找条件:

auto isEqual = [&](const Persistent<Function> &f) {
  return f.Get(isolate) == function;
};

这个lambda函数接受一个Persistent类型的参数f,返回一个bool值。在函数体中,比较f所持有的Local对象和待查找的function是否相等,如果相等,返回true,否则返回false。

接着,使用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());
}
``
nodejs c++ 有变量stdvectorPersistentFunction检查一个LocalFunction在上面的vector里面如果存在就删除

原文地址: https://www.cveoy.top/t/topic/fIMH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录