gpt4 book ai didi

c++ - 将常量添加到 std::vector 的所有元素的一个子元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:01 26 4
gpt4 key购买 nike

在 stackoverflow 上四处寻找后,我找到了这个优雅的解决方案

transform(myvec.begin(), myvec.end(), myvec.begin(),
bind2nd(std::plus<double>(), 1.0));

将常量添加到包含 double 的 std::vector 的所有元素。现在我正在使用关键点 (opencv Keypoints) 我有一个 std::vector<cv::keypoints>

这些关键点包含许多元素,如 Pt(x、y 中的位置)、大小、角度等...我想向所有 Pt 添加一个常量,而 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 循环的情况下完成此操作?

谢谢

最佳答案

在 C++11 中,您可以像这样使用通用的 foreach 循环来完成此操作:

for (auto& pt : keypoints) {
pt.x += myconstantX;
}

这比使用 std::transform 的版本要少得多,而且更容易理解,而且同样高效。

关于c++ - 将常量添加到 std::vector 的所有元素的一个子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21812876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com