<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Daten aus struct in STL-Container kopieren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein struct mit diversen Einträgen deklariert und im Laufe eines Programms mit Werten gefüllt. Das struct sieht folgendermassen aus:</p>
<pre><code class="language-cpp">typedef struct _KLT_Feature
{
  int id; //!&lt; Unique identifier for feature.
  int status; //!&lt; Usage status of feature.
  float row; //!&lt; Current row of feature.
  float col; //!&lt; Current column of feature.
  /* ... */
} KLT_FEATURE, * PTR_KLT_FEATURE;

typedef struct _KLT_Feature_List
{
    int count; //!&lt; Number of features in list.
    PTR_KLT_FEATURE features; //!&lt; A field of features.
} KLT_FEATURE_LIST, * PTR_KLT_FEATURE_LIST;
</code></pre>
<p>Jetzt würde ich gerne einige der Daten der Liste kopieren. Am besten wäre eine Liste bestehend aus <strong>&lt;id, status, row, col&gt;</strong>. Gibt es eine Möglichkeit, solch eine Liste mit den Mitteln der STL anzulegen?</p>
<p>Gruß, mbu.</p>
<p>EDIT: Wenn ich schon dabei bin, hier noch eine Frage diesbezüglich: Aus dem Konstrukt, welches oben entsteht möchte ich eine dreispaltige Liste berechnen nach der Art <strong>&lt;row, col, angle&gt;</strong> und diese Liste dann nach der dritten Spalte sortieren. Mir ist klar, dass ich mir da auch eine eigene Klasse schreiben könnte, die Frage ist nur, ob das mit den STL-Containern irgendwie schneller und problemloser funktioniert?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200553/daten-aus-struct-in-stl-container-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 22:43:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200553.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Dec 2007 17:07:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Daten aus struct in STL-Container kopieren on Sun, 16 Dec 2007 17:16:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein struct mit diversen Einträgen deklariert und im Laufe eines Programms mit Werten gefüllt. Das struct sieht folgendermassen aus:</p>
<pre><code class="language-cpp">typedef struct _KLT_Feature
{
  int id; //!&lt; Unique identifier for feature.
  int status; //!&lt; Usage status of feature.
  float row; //!&lt; Current row of feature.
  float col; //!&lt; Current column of feature.
  /* ... */
} KLT_FEATURE, * PTR_KLT_FEATURE;

typedef struct _KLT_Feature_List
{
    int count; //!&lt; Number of features in list.
    PTR_KLT_FEATURE features; //!&lt; A field of features.
} KLT_FEATURE_LIST, * PTR_KLT_FEATURE_LIST;
</code></pre>
<p>Jetzt würde ich gerne einige der Daten der Liste kopieren. Am besten wäre eine Liste bestehend aus <strong>&lt;id, status, row, col&gt;</strong>. Gibt es eine Möglichkeit, solch eine Liste mit den Mitteln der STL anzulegen?</p>
<p>Gruß, mbu.</p>
<p>EDIT: Wenn ich schon dabei bin, hier noch eine Frage diesbezüglich: Aus dem Konstrukt, welches oben entsteht möchte ich eine dreispaltige Liste berechnen nach der Art <strong>&lt;row, col, angle&gt;</strong> und diese Liste dann nach der dritten Spalte sortieren. Mir ist klar, dass ich mir da auch eine eigene Klasse schreiben könnte, die Frage ist nur, ob das mit den STL-Containern irgendwie schneller und problemloser funktioniert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1421465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421465</guid><dc:creator><![CDATA[mbu]]></dc:creator><pubDate>Sun, 16 Dec 2007 17:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus struct in STL-Container kopieren on Sun, 16 Dec 2007 18:34:35 GMT]]></title><description><![CDATA[<p>wenn ich dich richtig verstanden habe, willst du eine liste erstellen, deren einzelne elemente aus je vier (bzw. drei) verschiedenen einzelteilen bestehen. richtig?</p>
<p>da böte sich std::tr1::tuple in verbindung mit std::list an.</p>
<pre><code class="language-cpp">#include &lt;tr1/tuple&gt;
#include &lt;list&gt;

typedef std::tr1::tuple&lt;int, int, float, float&gt; feature_t;

int main ()
{
   std::list&lt;feature_t&gt; feature_list;

   feature_list.push_back (std::tr1::make_tuple(1, 2, 3.4, 5.6));

   feature_t feature(0, 1, 2.3, 4.5);
   std::cout &lt;&lt; std::tr1::get&lt;2&gt;(feature) &lt;&lt; '\n'; //mit get&lt;X&gt;(tuple) auf das X. element eines tuples zugreifen
}
</code></pre>
<p>mit einem schnell zusammengebauten functor ist es auch kein problem, die liste nach belieben zu sortieren:</p>
<pre><code class="language-cpp">template &lt;int Sort&gt;
struct sort_by_element
{
   template &lt;class Tuple&gt;
   bool operator () (Tuple const&amp; a, Tuple const&amp; b)
   {
      return get&lt;Sort&gt;(a) &lt; get&lt;Sort&gt;(b);
   }
};

//...
feature_list.sort (sort_by_element&lt;3&gt;());
</code></pre>
<p>zufrieden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1421526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421526</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sun, 16 Dec 2007 18:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus struct in STL-Container kopieren on Sun, 16 Dec 2007 20:35:34 GMT]]></title><description><![CDATA[<p>Super, hab das gerade mal an mein Projekt angepasst. Funktioniert einwandfrei. Kann mir jemand vielleicht noch sagen, wie ich, ausser durch durchzählen, auf das mittlere Element einer list zugreife?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1421638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421638</guid><dc:creator><![CDATA[mbu]]></dc:creator><pubDate>Sun, 16 Dec 2007 20:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to Daten aus struct in STL-Container kopieren on Sun, 16 Dec 2007 20:51:38 GMT]]></title><description><![CDATA[<p>Was besseres fällt mir auch net ein</p>
<pre><code class="language-cpp">list&lt;T&gt; l;
...
size_t size = l.size();
size_t mittlerePosition = size / 2;
list&lt;T&gt;::iterator iter = l.begin();
iter.advance(mittlerePosition - 1);
// iter zeigt nun auf das mittlere Element
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1421642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421642</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Sun, 16 Dec 2007 20:51:38 GMT</pubDate></item></channel></rss>