0

我有一个用 C# 编写的片段,现在我想将其转换为 Qt 环境。C#代码如下:

double xSum = (from p in this select p.X).Sum();
double ySum = (from p in this select p.Y).Sum();

注意:在 c# 版本中,变量 p 不是预定义的。

我尝试使用 foreach 和 while 循环对其进行转换,但出现了很多错误。你能帮我做吗?

这是我的qt版本,它不起作用

QPointF p;
double xSum = 0;
double ySum = 0;
foreach(p, this)
{
   xSum = xSum + p.rx();
   ySum = ySum + p.ry();
}

主要问题:Qt 中的“from in”等价物是什么?

4

2 回答 2

1

C++ 为此使用 lambda:

double xSum = std::accumulate(begin(), end(), 0.0,
  [](double d, QPointF p) { return d + p.rx(); } );
double ySum = std::accumulate(begin(), end(), 0.0,
  [](double d, QPointF p) { return d + p.ry(); } );

或者:

 double xSum = 0;
 std::for_each(begin, end, [&](QPointF p) { xSum += p.rx(); });

最直接的转换是

 double xSum = 0;
 for (auto p : *this) { 
   xSum += p.rx(); 
 }
于 2013-08-22T10:24:55.037 回答
0

[已解决]:我自己解决了如下:

QPointF p;
double xSum = 0;
double ySum = 0;
for(QVector::iterator it=this->begin(); it!=this->end(); it++)
{
    xSum = xSum + it->rx();
    ySum = ySum + it->ry();
}
于 2013-08-22T14:00:45.647 回答