我有一个void函数,它将一组点的起点和终点的迭代器(Setiterator set_begin,Setiterator set_end)作为参数,执行一些计算的查询点和一组点的beginnig的迭代器(在这里,将要添加结果)
void computedist(Setiterator set_begin, Setiterator set_end,
Vector const& query_point, DistanceIterator dist_begin )
{
std::transform(set_begin, set_end, dist_begin, calculation);
}
我已经读过std :: transform,可以在整个点集上进行该计算,但是我不知道该如何定义要完成的计算,因为我是C ++的新手。
在这种情况下,我想计算点到查询点的距离:
我想我的计算应该像这样
double calc_dist(double query_point, double point_of_the_set){
double dist;
dist = fabs(query_point - point_of_the_set);
return dist;
但是我不知道如何为函数提供参数,因为我是迭代器的新手。
谢谢!
的味道std::transform
你调用需要一个UnaryOp函数来调用,并向它传递“*迭代器”通过const引用,并预计的返回值iterator::value_type
,它写入*dest
。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
using valtype = int;
std::vector<valtype> v1 { 1, 2, 3, 4, 5 };
std::vector<valtype> v2(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(),
[] (const valtype& in) { return in * 2; });
for (auto& val : v2)
std::cout << val << '\n';
}
现场演示:http://ideone.com/CUUlvA
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句