2013-03-23 5 views
0
struct Cord 
    { 
     int x_cord; 
     int y_cord; 
     Cord(int x = 0,int y = 0):x_cord(x),y_cord(y) {} 
     bool operator < (const Cord& cord) const 
     { 
      if (x_cord == cord.x_cord) 
      { 
       return y_cord < cord.y_cord; 
      } 
      return x_cord < cord.x_cord; 
     } 
     bool operator == (const Cord& cord) const 
     { 
      return x_cord == cord.x_cord && y_cord == cord.y_cord; 
     } 
    }; 
std::set<Cord> cordRes,cordTmp;//initialized before 
std::set<Cord> cordItersect; 
std::set_intersection(cordRes.begin(),cordRes.end(),cordTmp.begin(),cordTmp.end(),cordRes.begin(),cordItersect.begin()); 

위의 코드에 대한 컴파일이 실패합니다. 모든 예제에서는 예제에서 set_intersection을 올바르게 사용합니까? 감사합니다올바른 방법으로 set_intersection을 사용하십시오.

답변

1

글쎄 하나의 문제는 set_intersection이 5 개의 인수 만 취한다는 것입니다. 다른 문제는 코드 삽입에 삽입 할 요소를 만드는 데 필요한 메커니즘이 필요하다는 것입니다. 귀하의 경우에는 std :: inserter를 사용하는 것이 좋습니다.

std::set_intersection(cordRes.begin(), cordRes.end(), 
    cordTmp.begin(), cordTmp.end(), 
    std::inserter(cordItersect, cordItersect.end())); 
관련 문제