std::vector<A_Star_Node> v_selective;//가능성을 선택하기위한 자료구조
std::vector<A_Star_Node>::iterator v_selective_pos;




            //이 함수는 여러가능성이 들어있는 노드들의 모임안에서 규칙위반인것을 찾아서 삭제하는 함수이다.
        for(v_selective_pos = v_selective.begin() ; v_selective_pos != v_selective.end(); ++v_selective_pos)
        {
                if(detect_violation(v_selective_pos->s1.val, v_selective_pos->s1.size()) == true ||
                        detect_violation(v_selective_pos->s2.val, v_selective_pos->s2.size()) == true ||
                        detect_violation(v_selective_pos->s3.val, v_selective_pos->s3.size()) == true)
                {
                        std::vector<A_Star_Node>::iterator temp;
                        temp = v_selective_pos;
                        v_selective_pos = v_selective.erase(v_selective_pos);
                        if(v_selective_pos == v_selective.end())
                                v_selective_pos = temp;                                
                }
                  }

if 문 안에서 해당 노드를 삭제 할 경우 v_selective.erase(v_selective_pos) 가 v_selective_pos 다음번 반복자를 리턴하기 떄문에
만약 v_selective_pos  가 end() 일 경우 문제가 생기는것 같습니다. 흔히들 반복자 무효화 문제라고 하던데요
나름 std::vector<A_Star_Node>::iterator temp 를 선언해서 erase() 되기 전에 백업하고 지우고 난 다음 다시 백업된 값을 넘겨주는
것을 생각하기도 했는데.. 역시 죽어버리는 군요

또 다른 방법으로 if(v_selective_pos == v_selective.end()) break;
를 해봣는데 이상하게 함수가 정상작동이 안되고 규칙이 위배된것들이 남아있는 현상을 볼 수 있었습니다.

이 반복자 무효화문제를 해결하는 방법이 있다면 알려주시면 감사하겠습니다.