0

我有一个工作正常的功能:

cv::Point2f classA::DoStuff(cv::Point2f pTmp){
    cv::Matx33f newMatrix = oldMatrix ; // oldMatrix  is already defined 
    cv::Point3f  newPoint = newMatrix *pTmp;
    cv::Point2f result(newPoint.x, newPoint.y);
    return result;
}

现在我想在一组点上运行这个函数,一个向量我知道我可以用一个 for 循环来做到这一点,但是从这个答案中,将一个向量与一个标量相乘:

std::transform(myv1.begin(), myv1.end(), myv1.begin(),
               std::bind1st(std::multiplies<T>(),3));

使用 STL 将向量元素乘以标量值

我想可以在一行中完成任何想法如何使用我的函数来做到这一点,例如:

std::vector<cv::Point2f> classA::Dostuff(std::vector<cv::Point2f> inputVector){
    cv::Matx33f newMatrix = oldMatrix ; // oldMatrix  is already defined 

..!!! 

提前致谢 ?

}

4

1 回答 1

2

假设您想从 的实例中运行classA它,它将是这样的:

using namespace std::placeholders;
std::transform(vec.begin(), 
               vec.end(), 
               vec.begin(), 
               std::bind(&classA::DoStuff, this, _1));

哪里vecstd::vector<std::vector<cv::Point2f>>。请注意,您可能会制作输入向量的不必要且可能成本高昂的副本。除非您需要函数中的副本,否则最好传递一个 const 引用:

std::vector<cv::Point2f> classA::Dostuff(const std::vector<cv::Point2f>& inputVector);
于 2013-08-13T09:05:26.847 回答