如何检索存储在列表中的一对点
How to retrive pair of points stored in list
我在QT Creator工作。我想找到两点的斜率。对于两点 A(x1,y1) , B(x2,y2),使用斜率公式
m = (y2-y1)/(x2-x1)。
问题:
点存储在列表 p 中。我想一次从这个列表中取两个点,并找到两个点的斜率,直到列表的末尾。
例如,如果列表包含 5 个点 {a,b,c,d,e}。我想找到斜率1. AB2. 公元前3. 光盘4. 德
法典:
QList< QgsPoint > p;
{
/* some Process */
p.push_front( path->vertex( e.inVertex() ).point() ); /* some points are added to list*/
}
QList< QgsPoint>::iterator it;
for ( it = p.begin(); it != p.end(); ++it )
{
mrbPath->addPoint( *it );
}
你可以在没有迭代器的情况下做到这一点。也许你会发现这段代码更干净:
for(int i = 0; i <= list.count() - 2; i++) {
QgsPoint a = list[i], b = list[i + 1];
//...
}
您可以使用 java 风格的迭代器:
QListIterator<QgsPoint> i(p);
while(i.hasNext())
{
if(!i.hasPrevious())
{
i.next();
continue;
}
m = (i.peekNext().y() - i.peekPrevious().y()) / (i.peekNext().x()-i.peekPrevious().x());
i.next();
}
@itwasntpete的评论是正确的答案。但是,如果需要,您可以使用一个迭代器来完成:
for( QList< QgsPoint >::iterator it = p.empty() ? p.begin() - 1 : p.begin(); it + 1 != p.end(); ++it )
{
const float slope = ( it[1].y() - it->y() ) / ( it[1].x() - it->x() );
//Do something with slope here
}
相关文章:
- CertGetCertificateChain 具有支持的内存存储和证书信任列表
- 在C++中存储要输入的标签列表
- 从文本文件读取,然后将项目存储到列表中
- 如何存储字符串列表
- 我应该如何在工厂类中存储弱指针列表?
- 在C++中存储和修改多个列表
- 将列表迭代器存储为成员
- 您将如何在 C++ 的专辑类中存储曲目列表?
- 存储将单个查询图像与多个图像的列表匹配的关键点索引
- C++ EnumWindows,将列表存储在字符串数组中
- C++ 存储来自 char* 函数的字符列表
- 如何制作一个结构程序,在其中可以存储无限量的数据,以便每次您想要时都可以将另一个产品添加到列表中?
- 删除存储为邻接列表的图表中的边缘
- 无法在C 中的双重链接列表中存储每个单词
- 存储数据列表并自动分配给结构的最佳方法是什么
- 实现双链接列表,其中数据存储在堆上
- 使用列表存储对象
- 将所有类实例的列表存储为类中的静态数组
- 将 rng 的列表存储在 std::array 中以进行多线程处理
- 将递增数量的列表子列表存储在vector中