转换“;从…起在“;在C#中迭代到C++(Qt)
本文关键字:C++ 迭代 Qt 起在 转换 | 更新日期: 2023-09-27 18:28:28
我有一个用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转换它,同时循环,但出现了很多错误。你能帮我做吗?
这是我的qt版本,不适用于
QPointF p;
double xSum = 0;
double ySum = 0;
foreach(p, this)
{
xSum = xSum + p.rx();
ySum = ySum + p.ry();
}
主要问题是:什么是Qt中"from in"的等价词?
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();
}
[SOLVED]:我自己解决了它,如下所示:
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();
}