<?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[Verschachtelte Vectoren auf Elemente zugreifen]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>habe mal wieder ein Problem und komme nicht richtig weiter. Vielleicht hat mir jemand einen Tip wo mein Fehler liegt.</p>
<p>Ich habe eine Klasse Messung in der ich verschiedene Berechnungen durchführe und eine Klasse Gesamtmessung in der ich die gesammelten Komponentenklassen in Vektoren ablege.</p>
<pre><code class="language-cpp">class CMessung
        {
         private: // Irgendwelche Variablen

         public:
         CMessung();                    // Konstruktor
         ~CMessung();                   // Destruktor

         // Vector für Werteaufnahme
         vector &lt;float&gt; Wert;

         // Werte berechnen
         void berechneWerte(void);

         // Maximum Wert aller Messwerte aus Private Bereich auslesen
         double getMAX(void);
        };
</code></pre>
<pre><code class="language-cpp">class CGesamtmessung
        {
         private: //Irgendwelche Variablen
         public:
         CGesamtmessung();                      // Konstruktor
         ~CGesamtmessung();                     // Destruktor

         // Unterklassen für alle Messungen
         class CMessung Zentralverriegelung[2];

         // Datencontainer für alle Messreihen
         vector &lt;CMessung&gt; Zentralverriegelung_Container0;
         vector &lt;CMessung&gt; Zentralverriegelung_Container1;
        };
</code></pre>
<p>Ich schiebe mir erst in meinen Zentralverriegelung_Container0 zwei mal die Klasse Messung Zentralverriegelung[0].</p>
<pre><code>for(int schalter=0;schalter &lt;=1;schalter++)
{
// Vector Zentralverriegelung in Container schieben
Messung-&gt;Zentralverriegelung_Container0.push_back(Messung-&gt;Zentralverriegelung[0]);
}
</code></pre>
<p>Und nun möchte ich den Messwert reinschieben, aber irgendwie schiebt er mir den Messwert wohl nicht in die Klasse Messung-&gt;Zentralverriegelung[0] sondern in meinen Zentralverriegelung_Container0.</p>
<pre><code>for(int schalter=0; schalter&lt;=1; schalter++)
{
 // Messwertcontainer in Zentralverriegelungcontainer mit Werten füllen
Messung-&gt;Zentralverriegelung_Container0.at(schalter).Wert.push_back(FSH3.read());
}
</code></pre>
<p>Ich habe nun auch schon so etwas probiert</p>
<pre><code>Messung-&gt;Zentralverriegelung_Container0.at(schalter).operator =(Messung-&gt;Zentralverriegelung[0]).Wert.push_back(FSH3.read());
</code></pre>
<p>Das Ergebnis ist das selbe. Wie kann ich denn den Vector der Klasse Messung im ContainerVector ansprechen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207513/verschachtelte-vectoren-auf-elemente-zugreifen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 11:42:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207513.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Mar 2008 17:33:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verschachtelte Vectoren auf Elemente zugreifen on Sat, 08 Mar 2008 17:33:24 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>habe mal wieder ein Problem und komme nicht richtig weiter. Vielleicht hat mir jemand einen Tip wo mein Fehler liegt.</p>
<p>Ich habe eine Klasse Messung in der ich verschiedene Berechnungen durchführe und eine Klasse Gesamtmessung in der ich die gesammelten Komponentenklassen in Vektoren ablege.</p>
<pre><code class="language-cpp">class CMessung
        {
         private: // Irgendwelche Variablen

         public:
         CMessung();                    // Konstruktor
         ~CMessung();                   // Destruktor

         // Vector für Werteaufnahme
         vector &lt;float&gt; Wert;

         // Werte berechnen
         void berechneWerte(void);

         // Maximum Wert aller Messwerte aus Private Bereich auslesen
         double getMAX(void);
        };
</code></pre>
<pre><code class="language-cpp">class CGesamtmessung
        {
         private: //Irgendwelche Variablen
         public:
         CGesamtmessung();                      // Konstruktor
         ~CGesamtmessung();                     // Destruktor

         // Unterklassen für alle Messungen
         class CMessung Zentralverriegelung[2];

         // Datencontainer für alle Messreihen
         vector &lt;CMessung&gt; Zentralverriegelung_Container0;
         vector &lt;CMessung&gt; Zentralverriegelung_Container1;
        };
</code></pre>
<p>Ich schiebe mir erst in meinen Zentralverriegelung_Container0 zwei mal die Klasse Messung Zentralverriegelung[0].</p>
<pre><code>for(int schalter=0;schalter &lt;=1;schalter++)
{
// Vector Zentralverriegelung in Container schieben
Messung-&gt;Zentralverriegelung_Container0.push_back(Messung-&gt;Zentralverriegelung[0]);
}
</code></pre>
<p>Und nun möchte ich den Messwert reinschieben, aber irgendwie schiebt er mir den Messwert wohl nicht in die Klasse Messung-&gt;Zentralverriegelung[0] sondern in meinen Zentralverriegelung_Container0.</p>
<pre><code>for(int schalter=0; schalter&lt;=1; schalter++)
{
 // Messwertcontainer in Zentralverriegelungcontainer mit Werten füllen
Messung-&gt;Zentralverriegelung_Container0.at(schalter).Wert.push_back(FSH3.read());
}
</code></pre>
<p>Ich habe nun auch schon so etwas probiert</p>
<pre><code>Messung-&gt;Zentralverriegelung_Container0.at(schalter).operator =(Messung-&gt;Zentralverriegelung[0]).Wert.push_back(FSH3.read());
</code></pre>
<p>Das Ergebnis ist das selbe. Wie kann ich denn den Vector der Klasse Messung im ContainerVector ansprechen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470621</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sat, 08 Mar 2008 17:33:24 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Vectoren auf Elemente zugreifen on Sat, 08 Mar 2008 19:13:42 GMT]]></title><description><![CDATA[<p>Ich glaube, du hast ein Verständnisproblem bzgl. der Datenstrukturen.</p>
<p>Es ist unsinnig, daß du einmal ein Array und dann wiederum einen std::vector von Messungen anlegst.</p>
<p>Und so wie du deinen Code geschrieben hast, ist es ja auch richtig, daß er nur die Daten in den std::vector hineinschreibt und nicht in das Array.</p>
<p>Du solltest außerdem die Daten von der Klasse Messung (d.h. std::vector&lt;float&gt; Wert) nicht öffentlich machen, sondern auch dafür geeignete Zugriffsfunktionen (lesen und schreiben) definieren.</p>
<p>Und warum hast du zwei Container (0 und 1)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470668</guid><dc:creator><![CDATA[~vector]]></dc:creator><pubDate>Sat, 08 Mar 2008 19:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Vectoren auf Elemente zugreifen on Sat, 08 Mar 2008 23:28:37 GMT]]></title><description><![CDATA[<p>Ich möchte ein Frequenzband scannen, am Beispiel von FM (Radio) ist es leichter zu erklären:<br />
Mein Frequenzband hat ein Spektrum von 88 MHz bis 108 MHz. dieses durchlaufe ich in 0.1 MHz Schritten also 200 verschiedene Frequenzen. Jede dieser Frequenzen möchte ich 15 mal Messen und daraus sollen verschiedene Dinge berechnet werden.</p>
<p>Mein Aufbau der Klassen war nun:</p>
<p>CMessung hat einen Vector Wert für eine Frequenz z.B. 88 MHz, die ich dann 15 mal messe. Diese Werte liegen im Vector Wert. Danach schiebe ich die ganze Klasse in die GesamtMessung, damit ich die Werte der einzelnen Frequenzen miteinander vergleichen kann.</p>
<p>Darum habe ich diese Verschachtelung. Ich habe bei Zentralverriegelung zwei verschiedene Frequenzbänder die nicht hintereinander liegen und desshalb habe ich da zwei Container angelegt.</p>
<p>Aber wo mein Fehler liegt, weiß ich immer noch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470817</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sat, 08 Mar 2008 23:28:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Vectoren auf Elemente zugreifen on Mon, 10 Mar 2008 09:27:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich verstehe weder dein Problem noch deinen Ansatz. Könntest du das evtl. nochmal ausführlicher erläutern.<br />
Nur noch ein Hinweis. push_back <strong>kopiert</strong> die Elemente.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471297</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 10 Mar 2008 09:27:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Vectoren auf Elemente zugreifen on Thu, 13 Mar 2008 07:16:19 GMT]]></title><description><![CDATA[<p>Ok, habe nun einen Fehler entdeckt und das ganze mal umgestrickt.</p>
<p>Ich habe in drei verschiedenen Klassen die Funktionen erledigt, die eigentlich eine Klasse machen sollte. Das kommt von den ständigen Änderungen.</p>
<p>Mein neuer Aufbau der Klasse hat einiges an Arbeit gekostet und ich programmiere noch um.</p>
<p>Wie ist diese Lösung:</p>
<pre><code class="language-cpp">Klasse CKomponenten
|--Klasse CMessContainer[2]    (mit vector &lt;vector &lt;CMessung&gt; &gt; Messung;) verschachteltem Vector
    |--Klasse CMessung (mit vector &lt;float&gt; Wert)
</code></pre>
<pre><code>Komponente-&gt;RADIO.Container[0].Messung[schalter][0].Wert.push_back(Messgeraet.read());
</code></pre>
<p>Sieht etwas verworren aus, aber die Anforderungen haben sich, bei jedem Testlauf geändert.</p>
<p>Es soll ein Frequenzband abgescannt werden. Bsp 88 bis 108 MHz. Die Schrittweite ist eingestellt auf 0.1 MHz, macht also (108 MHz - 88 MHz) / 0.1 MHz = 200 Messwerte.<br />
Jeder dieser Messwerte soll mehrfach (10 mal) gemessen werden = 2000 Messwerte in foat Werten.</p>
<p>Da aber die Schrittweite und die Messanzahl variabel einstellbar ist, ebenso wie die größe der Bandbreite die gemessen werden soll, versuche ich das ganze mit Vectoren zu lösen.</p>
<p>Nun kam als weiterer Punkt hinzu, dass der ermittelte Pegel einmal bei ausgeschaltetem Frequenzgenerator und einmal mit eingeschaltetem Frequenzgenerator gemessen werden soll.</p>
<p>Damit erhöht sich meine Anzahl an Werten auf 4000 bei der Radio FM Prüfung.</p>
<p>Da aber der eingeschaltete und der ausgeschaltete Zustand anschließend miteinander verglichen werden sollen und das über jeden Messschritt habe ich mir als Lösung überlegt:</p>
<p>Ich Frage über eine Gesamtklasse die Komponente ab. Wähle den MessContainer nach Anzahl der Messchritte. Habe dann den verschachtelten vector um zwischen Gerät ein oder aus zu wählen und kann dann in der Zweiten Dimension des Vectors über den Vector Wert die 10 Messungen abgreifen, bzw. speichern.</p>
<p>Soweit der Aufbau. Nur habe ich nun noch eine Frage zum verschachtelten Vector:</p>
<p>Augenblicklich mache ich sowas um den Vector zu löschen:</p>
<pre><code class="language-cpp">for(unsigned int i=0;
           i&lt;Komponente-&gt;RADIO.Container[0].Messung.size(); i++)
          {
           // Schleife durch Anzahl Messschritte
           for(unsigned int j=0;
               j&lt;Komponente-&gt;RADIO.Container[0].Messung[i].size(); j++)
              {
               // Messwerte löschen
               Komponente-&gt;RADIO.Container[0].Messung[i][j].Wert.clear();
              }

           // Container Anzahl Messschritte löschen
           Komponente-&gt;RADIO.Container[0].Messung[i].clear();
          }

       // Container RADIO löschen
       Komponente-&gt;RADIO.Container[0].Messung.clear();
</code></pre>
<p>Muss ich das so umständlich machen oder langt es einfach die erste Dimension des Vectors zu löschen also so:</p>
<pre><code>Komponente-&gt;RADIO.Container[0].Messung.clear();
</code></pre>
<p>Was mir nämich dabei aufgefallen ist, ist, dass ich nun im voraus dem geschachtelten Vector sagen muß, wieviele Ebenen er hat. Also sowas wie die nächste Zeile, damit ich ihm nacher mit push_back die Werte geben kann. Wenn ich das nicht mache bringt er mir als Meldung, dass ich versuche Werte in einen nicht angelegten Bereich zu schieben.</p>
<pre><code>Komponente-&gt;RADIO.Container[0].Messung.resize(2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1473412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473412</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Thu, 13 Mar 2008 07:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Vectoren auf Elemente zugreifen on Thu, 13 Mar 2008 07:51:23 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-437.html" rel="nofollow">Jansen</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-2.html" rel="nofollow">VCL (C++ Builder)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473427</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Thu, 13 Mar 2008 07:51:23 GMT</pubDate></item></channel></rss>