2014-11-20 2 views
0

벡터에서 점 집합을 추출하고 계산을 시도하고 있습니다. 포인트는벡터에서 값 추출

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 좌표 만 계산하면됩니까?

+0

그런데 어떻게 되나요? – Jake0x32

+0

미안합니다. p가 없습니다. 편집했습니다. –

+0

@ NarekMinaskan - 목표는 'x'좌표를 얻고 그걸로 무엇인가합니까? – PaulMcKenzie

답변

0

range-based for loops을 사용하고 이터레이터를 함께 피할 수 있습니다. 당신이 C++ (11)를 사용할 수없는 경우

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

, 당신은 당신이 다음

double width = ptA.x - ptB.x; 
같은 것을 할 것 Vector의 구현에 따라 당신의 else 블록

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

에서 다음을 수행 할 수 있습니다

+0

'C++ 11을 사용할 수 없다면 당신은 대답에서 아무 것도 쓸 수 없다. –

+0

미안하지만, '당신의 else 블록 –

0

나는 그것을 알아 냈다. 따라서 난 부호 반복자 필요 벡터를 통해 단순한 예를 루프

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

물품 것이며, U X가 어떤 요소가 판단한다 (X)에 액세스해야하는 요소 중 하나만 액세스 할. 이 질문에 0은 x 좌표입니다

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)); 
}