【发布时间】:2014-03-15 19:01:15
【问题描述】:
在查看 stackoverflow 后,我发现了这个优雅的解决方案
transform(myvec.begin(), myvec.end(), myvec.begin(),
bind2nd(std::plus<double>(), 1.0));
为包含双精度的 std::vector 的所有元素添加一个常量。
现在我正在使用关键点(opencv Keypoints)我有一个std::vector<cv::keypoints>
这些关键点包含许多元素,如 Pt(x,y 中的位置)、大小、角度等... 我想为所有 Pt 添加一个常量,它又包含另外两个参数(x 和 y)
我试过了
std::transform( keypoints1.pt.x.begin(), keypoints1.pt.x.end(),
keypoints1.pt.x.begin(), std::bind2nd( std::plus<double>(), myconstantX ) );
但这不能编译。不幸的是,我对 STL 结构的复杂访问不是很满意。
您知道如何在不使用 for 循环的情况下完成此操作吗?
谢谢
【问题讨论】: