XPathFinder.cpp
上传用户:yokoluohf
上传日期:2013-02-25
资源大小:769k
文件大小:1k
源码类别:

GIS编程

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "XPathfinder.h"
  3. #include <vector>
  4. #include <algorithm>
  5. #include <functional>      // For greater<int>( )
  6. using namespace std;
  7. XPathFinder::XPathFinder ()
  8. {
  9. lines = XMapCtrl::lines;
  10. lines.BuildStations(stations);
  11. }
  12. XPathFinder::~XPathFinder ()
  13. {
  14. }
  15. vector<XPath> XPathFinder::Find(CString station1, CString station2, int type)
  16. {
  17. vector<XPath> paths;
  18. XStation* pStation1 = stations.Find (station1);
  19. XStation* pStation2 = stations.Find (station2);
  20. if (pStation1 && pStation2)
  21. {
  22. //1, 找直达线路
  23. vector<CString> nonstopLines;
  24. set_intersection (pStation1->lines.begin(), pStation1->lines.end(),
  25. pStation2->lines.begin(), pStation2->lines.end(), nonstopLines.begin());
  26. if (nonstopLines.size () > 0 )
  27. {
  28. }
  29. else //2, 经过一个中转站
  30. {
  31. vector<CString> stations1, stations2, stations3;
  32. lines.Merge (pStation1->lines, stations1);
  33. lines.Merge (pStation2->lines, stations2);
  34. set_intersection (stations1.begin(), stations1.end(),
  35. stations2.begin(), stations2.end(), stations3.begin());
  36. }
  37. }
  38. return paths;
  39. }