从向量中提取值

时间:2014-11-20 19:01:21

标签: c++ qt

我试图从矢量中提取一组点并对它们进行计算。这些点存储如

std::vector<Vector> m_points1;
m_points1.push_back(Vector( -4.0, 8.0));
m_points1.push_back(Vector( -1.0, -7.0));
m_points1.push_back(Vector( 0.0, -8.0));
m_points1.push_back(Vector( 2.0, -4.0));
m_points1.push_back(Vector( 3.0, 1.0));

我不能像以前那样循环遍历数组并获取我想要的值。我的代码看起来像:

for(std::vector<Vector>::iterator i=points.begin();i != points.end();i++)
{
    k=i;
    for(std::vector<Vector>::iterator j=points.begin();j != points.end();j++)
    {
        if(k==j)
        {
            continue;
        }
        else
        {
                //How to get values ???
        }

    } 

}

我如何提取积分?并仅在x坐标上进行计算?

3 个答案:

答案 0 :(得分:0)

您可以使用range-based for loops并一起避免使用迭代器。

for (auto const& ptA : points)
{
    for (auto const& ptB : points)
    {
        if (&ptA == &ptB)
        {
            continue;
        }
        else
        {
            // directly use ptA and ptB
        }
    }
}

如果您无法使用C ++ 11,则可以在else块中执行以下操作

        else
        {
            Vector const& ptA = *i;
            Vector const& ptB = *j;
        }

根据您Vector的实施情况,您可以执行类似

的操作
double width = ptA.x - ptB.x;

答案 1 :(得分:0)

我明白了。所以我只想写一个简单的例子

for(unsigned int i = 0 ; i<points.size() ; i++)
{
       temp = points[i](0);
}

循环遍历向量,它需要一个无符号迭代器,并且只访问其中一个元素,你必须用(x)来访问它,其中x确定哪个元素。在这个问题中,0是x坐标

答案 2 :(得分:0)

else
{
    // do wathever you want using
    // i->x
    // i->y
    // j->x
    // j->y
    float dist = sqrt( (i->x-j->x)*(i->x-j->x)
                     + (i->y-j->y)*(i->y-j->y) );
}