C-Programmierung

STL Iterator Beispiel

STL Iteratoren | | STL Zeiger

Beipiel zur Verwendung von Iteratoren anhand der Berechnung der Länge eines GPS-Tracks.

Ein solcher “Track” ist eine Sequenz von 3D-Vektoren, die z.B. in einer std::vector<Vector3D> oder alternativ in einer std::list<Vector3D> Container-Klasse gespeichert werden. Die Container-Klasse “GPS-Track” erhalten wir durch Ableitung der entsprechenden STL Klasse und anschließender Spezialisierung durch Hinzufügen der Methode “length”:

class GPSTrack: public std::list<Vector3D>
{
   public:

   // ctor
   GPSTrack()
      : std::list<Vector3D>()
   {}

   // compute length of 3D "track"
   double length()
   {
      double l = 0.0;
      auto last = begin();
      for (auto it = begin(); it != end() ; it++)
      {
         Vector3D d = *it - *last;
         l += sqrt(d*d);
         last = it;
      }

      return(l);
   }

};

Da hier der C++11 Standard verwendet wird, müssen wir dies im CMakeLists.txt durch Hinzufügen der folgenden Compiler-Option einstellen:

SET(CMAKE_CXX_FLAGS "-std=c++11")


STL Iteratoren | | STL Zeiger

Options: