<?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[Verbesserungsvorschläge für mein Dynamische Pointer Array (Template)]]></title><description><![CDATA[<p>Meine Aufgabe ist es ein Dynamisches Pointer Array zu schreiben, habe bisher die Funktion &quot;add&quot; und &quot;getAt(int)&quot; implementiert. Würde mich freuen wenn Verbesserungsvorschläge etc. kommen würden!</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
class CDynPtrArray{

	T **m_pArray;	//Template Pointer Array
	int iSize;		//Aktuelle Array Größe

public:

	//Konstruktor
	CDynPtrArray(int iSize){
		 this-&gt;iSize=iSize;
		 m_pArray= new T*[iSize];
	}
	//Standart Konstruktor
	CDynPtrArray(){
		 this-&gt;iSize=0;
		 m_pArray= new T*[0];
	}

	//Destruktor
	~CDynPtrArray(){
		delete[] m_pArray;
	}

	//Size
	inline int GetSize(){ return iSize;}

	//Pointer adden
	void add(T* Ptr){

		//Array um ein Elment vergrössern
		resize(iSize+1);

		//Pointer als letzes Element
		m_pArray[iSize]= Ptr;

		//Größe erweitern
		iSize++;

	}

	// Pointer zurückgeben
	T* getAt(int iPos){

		if(iPos&lt;0 || iPos&gt;iSize)
			return NULL;

		return m_pArray[iPos];

	}
	//BOOL delAt(int iPos){
	//	
	//	if(iPos&lt;0 || iPos&gt;iSize)
	//		return false;
	//
	//}

private:

	void resize(int iNewSize){
		T  **ppNewArray= new T*[iNewSize];

		//Referenzen kopieren
		for( int i=0; i&lt; iSize; i++)
			ppNewArray[i]= m_pArray[i];

		//Altes Array löschen und mit neuem Array referenzieren
		delete[] m_pArray;
		m_pArray= ppNewArray;
	}

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/176532/verbesserungsvorschläge-für-mein-dynamische-pointer-array-template</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 13:44:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176532.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Mar 2007 09:18:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 09:18:18 GMT]]></title><description><![CDATA[<p>Meine Aufgabe ist es ein Dynamisches Pointer Array zu schreiben, habe bisher die Funktion &quot;add&quot; und &quot;getAt(int)&quot; implementiert. Würde mich freuen wenn Verbesserungsvorschläge etc. kommen würden!</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
class CDynPtrArray{

	T **m_pArray;	//Template Pointer Array
	int iSize;		//Aktuelle Array Größe

public:

	//Konstruktor
	CDynPtrArray(int iSize){
		 this-&gt;iSize=iSize;
		 m_pArray= new T*[iSize];
	}
	//Standart Konstruktor
	CDynPtrArray(){
		 this-&gt;iSize=0;
		 m_pArray= new T*[0];
	}

	//Destruktor
	~CDynPtrArray(){
		delete[] m_pArray;
	}

	//Size
	inline int GetSize(){ return iSize;}

	//Pointer adden
	void add(T* Ptr){

		//Array um ein Elment vergrössern
		resize(iSize+1);

		//Pointer als letzes Element
		m_pArray[iSize]= Ptr;

		//Größe erweitern
		iSize++;

	}

	// Pointer zurückgeben
	T* getAt(int iPos){

		if(iPos&lt;0 || iPos&gt;iSize)
			return NULL;

		return m_pArray[iPos];

	}
	//BOOL delAt(int iPos){
	//	
	//	if(iPos&lt;0 || iPos&gt;iSize)
	//		return false;
	//
	//}

private:

	void resize(int iNewSize){
		T  **ppNewArray= new T*[iNewSize];

		//Referenzen kopieren
		for( int i=0; i&lt; iSize; i++)
			ppNewArray[i]= m_pArray[i];

		//Altes Array löschen und mit neuem Array referenzieren
		delete[] m_pArray;
		m_pArray= ppNewArray;
	}

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1250276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250276</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 22 Mar 2007 09:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 09:32:25 GMT]]></title><description><![CDATA[<p>Meine Kritik: man sollte sich an den Schnittstellen der Standardlibrary halten. getAt und add sind für einen C++ler völlig unbekannt und inkompatibel. Besser wäre at() und ein Index-Operator (der auch eine Bereichsprüfung machen kann) und push_back(). Weiterhin ist ein begin() und end() wichtig, damit man den Container mit den Standard-Algos nutzen kann. GetSize() ist auch unglücklich, hier wäre size() C++-konformer.</p>
<p>Damit würde die Akzeptanz des Containertyps schneller steigen. Ich würde sowas ungern benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250285</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 22 Mar 2007 09:32:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 09:29:28 GMT]]></title><description><![CDATA[<p>Erstens: Was hindert dich daran, einen vector&lt;&gt; zu verwenden? Normalerweise ist es nicht nötig, das Rad neu zu erfinden.</p>
<p>Zweitens: Du brauchst noch einen Copy-Ctor und operator=, sonst kommst du schnell in Teufels Küche.</p>
<p>Drittens: Eventuell solltest du vorsorglich etwas mehr Speicher anfordern als du für die aktuelle Größe benötigst, dann mußt du die Daten nicht bei jedem add() umkopieren (kann bei größeren Arrays schnell langwierig werden).</p>
<p>Viertens: Ist zwar nur eine Kleinigkeit, aber - nimm Initialisierungslisten:</p>
<pre><code class="language-cpp">CDynPtrArray(int size=0)
: iSize(size), m_pArray(new T*[size])
{}
</code></pre>
<p>Fünftens: GetSize() und getAt() kannst du auch als const-Methoden deklarieren - die ändern nichts an deinen Daten (btw, einige dich mal mit dir selbst auf eine einheitliche Schreibweise :D).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250286</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Mar 2007 09:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 09:34:00 GMT]]></title><description><![CDATA[<p>Naja, vielleicht dient es nur zum Übungszweck? (hoffe ich!) Ansonst kann man auch <a href="http://www.boost.org/libs/ptr_container/doc/ptr_container.html" rel="nofollow">http://www.boost.org/libs/ptr_container/doc/ptr_container.html</a> benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250288</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 22 Mar 2007 09:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 10:31:03 GMT]]></title><description><![CDATA[<p>Für den Fall, das size 0 ist würde ich erst gar keinen Speicher anfordern. Die size-Variable sollte size_t sein.</p>
<pre><code class="language-cpp">CDynPtrArray(size_t size=0)
: iSize(size), m_pArray(size ? new T*[size] : 0)
{}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1250350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250350</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Mar 2007 10:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 13:02:09 GMT]]></title><description><![CDATA[<p>danke für die kritik und verbesserungsvorschläge... Ja ist primär zur übung gedacht... wenn allerdings auf einem system programmiert wird, auf dem keine biblothek vorhanden ist, musst die ja nach diesem Still realistiert werden (nehm ich mal an) ..</p>
<p>Das Problem mit der dynamischen größe könnte ich ja mit einer verketten list umsetzen oder? grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250449</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 22 Mar 2007 13:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 13:22:23 GMT]]></title><description><![CDATA[<p>Könnte man schon. Das kommt jetzt darauf an, wie du dein Array verwenden willst. Wenn wahlfreien Zugriff über einen Indexoperator brauchst ist das eher eine schlechte Idee. Machs doch wie bei std::vector. Alloziere etwas mehr Speicher (z.Bsp. doppelt so viel) und erzeuge neuen wenn du mehr brauchst und kopiere dann um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250459</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Mar 2007 13:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 13:40:55 GMT]]></title><description><![CDATA[<p>achso d.h. std::vector reservier immer doppelt soviel sovielspeicher wie nötig ist... wenn der speicher mit &quot;add&quot; dann ausgereitzt ist, wird wieder rum das doppelte vom doppelten reserviert und umkopierT?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250480</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 22 Mar 2007 13:40:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 13:57:55 GMT]]></title><description><![CDATA[<p>du überprüfst nie ob die übergebenen Werte io sind ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250497</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 22 Mar 2007 13:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verbesserungsvorschläge für mein Dynamische Pointer Array (Template) on Thu, 22 Mar 2007 14:15:36 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>achso d.h. std::vector reservier immer doppelt soviel sovielspeicher wie nötig ist... wenn der speicher mit &quot;add&quot; dann ausgereitzt ist, wird wieder rum das doppelte vom doppelten reserviert und umkopierT?</p>
</blockquote>
<p>Nein, muß der Vector nicht unbedingt. Hängt von der Implementierung ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250516</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 22 Mar 2007 14:15:36 GMT</pubDate></item></channel></rss>