<?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[Klasse mit Vektoren]]></title><description><![CDATA[<p>Hallo liebe Forummenschen!<br />
Beim Programmieren ist mir eine Frage eingefallen die mir helfen würde mein Programm strukturierter zu machen.<br />
Ich würde gerne ein Attribut meiner Klasse zu einem Vektor machen damit ich die Adjazenten Kantenindexe da reinpushen kann.</p>
<blockquote>
<p>#include&lt;vector&gt;<br />
#include&lt;iostream&gt;<br />
#include&lt;cmath&gt;</p>
<p>class Vertex<br />
{<br />
public:<br />
Vertex(void);<br />
~Vertex(void);</p>
<p>private:<br />
int v;<br />
vector&lt;int&gt; Edge;<br />
};</p>
</blockquote>
<p>Beim schreiben hat er mir bereits gesagt:<br />
Error: vector ist keine Vorlage<br />
1. Was meint er damit?<br />
2. Wie sollte das richtig aussehen.</p>
<p>==============</p>
<p>Eine Nebenfrage. Ich habe versucht aus einer Datei möglichst optimal Daten auszulesen. Dabei bin ich im Forum auf diesen Trick gestoßen:<br />
(Quelle) ist mein ifstream</p>
<pre><code>Quelle&gt;&gt;Knotenanzahl&gt;&gt;Kantenanzahl;	// -- FUNKTIONSFÄHIG

    for(int i = 0; i &lt; Kantenanzahl; i++){
		int a,b,gew;
		Quelle &gt;&gt; a &gt;&gt; b &gt;&gt; gew;
	}
</code></pre>
<p>Dabei frage ich mich wie dieser Operator &quot;&gt;&gt;&quot; in diesem speziellen Fall arbeitet?<br />
Ich lese aus einer .txt Datei aus und ich dachte aus Textdateien ließt man in der Regel strings aus. Hier kann er aber 1. die Leerzeichen und Zeilenumbrüche überspringen und nimmt sich immer nur die Zahlen raus.<br />
Über cin hab ich gelesen dass es genau so arbeitet, aber cin steht da nicht.<br />
get() nimmt sich jedes Zeichen und getline ignoriert nur \n. Oder ist das irgendwie anders?</p>
<p>Datei.txt<br />
5<br />
6<br />
0 1 2<br />
2 1 2<br />
2 3 2<br />
3 1 1<br />
0 2 3<br />
3 4 2</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297510/klasse-mit-vektoren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 10:15:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297510.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Dec 2011 10:39:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 10:42:05 GMT]]></title><description><![CDATA[<p>Hallo liebe Forummenschen!<br />
Beim Programmieren ist mir eine Frage eingefallen die mir helfen würde mein Programm strukturierter zu machen.<br />
Ich würde gerne ein Attribut meiner Klasse zu einem Vektor machen damit ich die Adjazenten Kantenindexe da reinpushen kann.</p>
<blockquote>
<p>#include&lt;vector&gt;<br />
#include&lt;iostream&gt;<br />
#include&lt;cmath&gt;</p>
<p>class Vertex<br />
{<br />
public:<br />
Vertex(void);<br />
~Vertex(void);</p>
<p>private:<br />
int v;<br />
vector&lt;int&gt; Edge;<br />
};</p>
</blockquote>
<p>Beim schreiben hat er mir bereits gesagt:<br />
Error: vector ist keine Vorlage<br />
1. Was meint er damit?<br />
2. Wie sollte das richtig aussehen.</p>
<p>==============</p>
<p>Eine Nebenfrage. Ich habe versucht aus einer Datei möglichst optimal Daten auszulesen. Dabei bin ich im Forum auf diesen Trick gestoßen:<br />
(Quelle) ist mein ifstream</p>
<pre><code>Quelle&gt;&gt;Knotenanzahl&gt;&gt;Kantenanzahl;	// -- FUNKTIONSFÄHIG

    for(int i = 0; i &lt; Kantenanzahl; i++){
		int a,b,gew;
		Quelle &gt;&gt; a &gt;&gt; b &gt;&gt; gew;
	}
</code></pre>
<p>Dabei frage ich mich wie dieser Operator &quot;&gt;&gt;&quot; in diesem speziellen Fall arbeitet?<br />
Ich lese aus einer .txt Datei aus und ich dachte aus Textdateien ließt man in der Regel strings aus. Hier kann er aber 1. die Leerzeichen und Zeilenumbrüche überspringen und nimmt sich immer nur die Zahlen raus.<br />
Über cin hab ich gelesen dass es genau so arbeitet, aber cin steht da nicht.<br />
get() nimmt sich jedes Zeichen und getline ignoriert nur \n. Oder ist das irgendwie anders?</p>
<p>Datei.txt<br />
5<br />
6<br />
0 1 2<br />
2 1 2<br />
2 3 2<br />
3 1 1<br />
0 2 3<br />
3 4 2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162343</guid><dc:creator><![CDATA[Sunflower]]></dc:creator><pubDate>Sat, 31 Dec 2011 10:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 10:48:37 GMT]]></title><description><![CDATA[<p>Es muss lauten</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; Edge;
</code></pre>
<p>da vector sich Namespace std befindet. Alternativ geht es auch mit</p>
<pre><code class="language-cpp">using std::vector;
</code></pre>
<p>womit man jedoch sparsam umgehen sollte und vor allem in headern vermeiden.</p>
<p>Zu deiner zweiten Frage: Was ist den Quelle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162346</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sat, 31 Dec 2011 10:48:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 10:54:57 GMT]]></title><description><![CDATA[<p>Danke!<br />
Noch eine anschließende kleine Frage. Warum sollte man damit sparsam umgehen?<br />
Und noch viel wichtiger. Warum sollte man das in Headern nicht machen?<br />
Gibt es eine bessere Möglichkeit einen Vector in einer Klasse zu verwenden? Oder sollte ich das allgemein vermeiden?</p>
<p>Ich hatte Quelle noch editiert während du geschrieben hattest. Oben ist Quelle bereits als ifstream markiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162348</guid><dc:creator><![CDATA[Sunflower]]></dc:creator><pubDate>Sat, 31 Dec 2011 10:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 11:15:52 GMT]]></title><description><![CDATA[<p>Using Directives sind in headers gefaehrlich, da derjenige, der den header in seinem .cpp file inkludiert vielleicht nicht weiss, dass im header diese using Directive ist.<br />
Das kann zu ungewollten Namenskollisionen kommen.</p>
<p>Ein (aehnliches) Beispiel von Namenskollision, das mir mal passiert ist:<br />
In der Standardbibliothek im namespace std gibt es eine Funktion std::swap(...). Ich wusste das nicht und wollte eine eigene Implementierung von swap(...) schreiben. Da ich jedoch using namespace std in meinem Code hatte gab das merkwuerdige Fehler, die ich mir einige Zeit nicht erklaren konnte.</p>
<p>Daher auch Sparsam mit</p>
<pre><code class="language-cpp">using namespace std; // oder welcher namespace auch immer
</code></pre>
<p>umgehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162357</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sat, 31 Dec 2011 11:15:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 11:19:21 GMT]]></title><description><![CDATA[<p>eine klasse kann alles als member haben wenn das gebraucht wird. auch vectoren, du müsst nur dann halt im hinterkopf haben, dass kopieren länger dauert</p>
<p>warum man using nicht spammen sollte?<br />
du weist was namespaces sind? die sind dafür da, nochmal eine unterteilung vorzunehmen (z.b. wenn firma a eine bibliothek schreibt und firma b auch, beide haben libs sind zwar für verschiedene sachen, haben aber z.b. klassen oder funktionen die gleich heissen, aber unterschiedliches machen. das würde sich also beissen, und namespaces geben noch einen zusätzlichen namen mit, so könnte man das erklären), vergleichbar mit packages in java</p>
<p>wenn du diese namespaces aber jetzt ausschaltest, eben durch using direktiven in headern, dann hebelst du den gesamten gedanken der namespaces aus und machst sie nutzlos. denn alles was deinen header (mit den usings) verwendet kennt auch die benutzten elemente des geusedten namespace und zwar auf globaler ebene (bei dem beispiel mit der firma gibt es dann linker errors, da gleiche sachen ja mehrmals definiert worden sind. unter umständen)</p>
<p>Also Merkregel: in Headern nie using, immer komplett ausschreiben (oder typedefs). in cpp dateien kannst du das hinschreiben, das stört keinen, da die ja nicht eingebunden werden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162359</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 31 Dec 2011 11:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 11:37:48 GMT]]></title><description><![CDATA[<p>Danke für die Antworten. Das Programm schreibe ich bereits weiter. Weiß noch jemand etwas zu meiner zweiten Frage?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162363</guid><dc:creator><![CDATA[Sunflower]]></dc:creator><pubDate>Sat, 31 Dec 2011 11:37:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 11:51:05 GMT]]></title><description><![CDATA[<p>mh, da sollte eher jemand was zu sagen, der die iostreams auch versteht...</p>
<p>es ist ja so:<br />
es gibt inputstreams und outputstreams. beide können verschiedene ziele haben, also z.B. dateien(ifstreams ofstream), console(cin cout), bestimmte speicherbereiche wie im falle von stringstream. und man kann sicherlich noch weitere bauen (oder man leitet die standardausgabe um, die pipe unter linux z.B.)</p>
<p>für diese streams sind die operationen &gt;&gt;(istreams) und &lt;&lt;(ostreams) definiert, klar sie zeigen was an bzw. lesen was ein. und zwar existieren hierfür eine reihe überladungen, für string, für char*, für int, für float, double... usw. und das sowohl zur ein- als auch ausgabe (wieder leicht vergleichbar wie der java.util.Scanner)<br />
so und beim eingelesen wird erstmal eine gewisse anzahl an bytes eingelesen, nämlich bei &gt;&gt; hört es bei einen whitespace auf(leerzeichen oder enter oder so), danach wird versucht das eingelesene in den entsprechenden datentyp zu quetschen (den typ und auch die zeielvariable gibt man ja an -&gt; istream &gt;&gt; zielVar;). und klappt das nicht werden die failbits gesetzt und der stream &quot;blockiert&quot; danach, bis du alles wieder in einen arbeitsfähigen zustand bringst (clear() usw.)</p>
<p>bei der ausgabe ists umgekehrt, man versucht den datentyp nach einem ausgabefähigen typ zu konvertieren (im simpelsten fall char*) und schreibt das dann auf das ausgabe medium</p>
<p>so, und wie du gemerkt hast, funktioniert das überall gleich: wie ein spielzeugauto, was immer weiter gerade ausfährt, sprich die räder drehen sich. du kannst es auf den tisch setzen und es fährt, du setzt es auf den boden und es fährt, du setzt es sonstwohin und es fährt (die geschwindigkeit ändert sich natürlich auch, bei beiden beispielen, streams &lt;--&gt; auto)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162364</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 31 Dec 2011 11:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 11:51:09 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich lese aus einer .txt Datei aus und ich dachte aus Textdateien ließt man in der Regel strings aus. Hier kann er aber 1. die Leerzeichen und Zeilenumbrüche überspringen und nimmt sich immer nur die Zahlen raus.<br />
Über cin hab ich gelesen dass es genau so arbeitet, aber cin steht da nicht.</p>
</blockquote>
<p>ifstream ist auch nur ein istream, funktioniert ergo praktisch identisch wie std::cin. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162365</guid><dc:creator><![CDATA[Ethon__]]></dc:creator><pubDate>Sat, 31 Dec 2011 11:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse mit Vektoren on Sat, 31 Dec 2011 12:16:54 GMT]]></title><description><![CDATA[<p>Danke!<br />
Damit wären schon alle meine Fragen beantwortet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162370</guid><dc:creator><![CDATA[Sunflower]]></dc:creator><pubDate>Sat, 31 Dec 2011 12:16:54 GMT</pubDate></item></channel></rss>