<?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[Eigener Container]]></title><description><![CDATA[<p>Hallo,<br />
Was haltet ihr davon? Kann/sollte man auf solch eine Weise einen Container entwerfen, der Intern einen stl container verwendet? Was fehlt für die Kompatibilität mit den Standardalgorithmen? Ich hatte mich schon einmal eingelesen in dieses Thema. Ist jetzt schon länger her und fast alles wieder weg. :(. Vielleicht hat einer einen guten Link oder Hinweiß.</p>
<p>Danke,<br />
Martin</p>
<pre><code>typedef std::vector&lt;morpheme_t&gt; morphemes_t;

class module_t : private morphemes_t
{
public:

  using morphemes_t::begin;
  using morphemes_t::end;
  using morphemes_t::rbegin;
  using morphemes_t::rend;

  module_t(const std::initializer_list&lt;morpheme_t&gt; &amp;il)
    : morphemes_t(il)
  { }

  void add(const word_t &amp;word, const codeword_t &amp;codeword)
  {
    push_back(morpheme_t(word, codeword));
  }

  void remove(const word_t &amp;word)
  {
    const std::function&lt;bool(const morpheme_t&amp;)&gt; compare =
      [&amp;word](const morpheme_t &amp;morpheme){ return morpheme.word().compare(word); };

    auto it = std::find_if(begin(), end(), compare);

    if(it != end())
      {
	(*it) = back();
	pop_back();
      }
    else
      {
	throw 1;
      }
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/297998/eigener-container</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 03:14:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297998.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Jan 2012 14:57:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigener Container on Wed, 11 Jan 2012 14:57:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Was haltet ihr davon? Kann/sollte man auf solch eine Weise einen Container entwerfen, der Intern einen stl container verwendet? Was fehlt für die Kompatibilität mit den Standardalgorithmen? Ich hatte mich schon einmal eingelesen in dieses Thema. Ist jetzt schon länger her und fast alles wieder weg. :(. Vielleicht hat einer einen guten Link oder Hinweiß.</p>
<p>Danke,<br />
Martin</p>
<pre><code>typedef std::vector&lt;morpheme_t&gt; morphemes_t;

class module_t : private morphemes_t
{
public:

  using morphemes_t::begin;
  using morphemes_t::end;
  using morphemes_t::rbegin;
  using morphemes_t::rend;

  module_t(const std::initializer_list&lt;morpheme_t&gt; &amp;il)
    : morphemes_t(il)
  { }

  void add(const word_t &amp;word, const codeword_t &amp;codeword)
  {
    push_back(morpheme_t(word, codeword));
  }

  void remove(const word_t &amp;word)
  {
    const std::function&lt;bool(const morpheme_t&amp;)&gt; compare =
      [&amp;word](const morpheme_t &amp;morpheme){ return morpheme.word().compare(word); };

    auto it = std::find_if(begin(), end(), compare);

    if(it != end())
      {
	(*it) = back();
	pop_back();
      }
    else
      {
	throw 1;
      }
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2166809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166809</guid><dc:creator><![CDATA[Martin Kalbfuß]]></dc:creator><pubDate>Wed, 11 Jan 2012 14:57:53 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Container on Wed, 11 Jan 2012 15:04:47 GMT]]></title><description><![CDATA[<p>Es gibt keinen Grund von STL-Containern zu erben!</p>
<p>1. Du darfst keinen eigenen Destruktor hinzufügen, da der von std::vector nicht virtual ist, ergo bei einem delete auf den Basisklassenzeiger deiner nicht aufgerufen wird.<br />
2. Sind alle interessanten Internas private und nicht protected, dh. du kannst nix machen, was nicht auch mit einer freien Funktion möglich wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166813</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Wed, 11 Jan 2012 15:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Container on Wed, 11 Jan 2012 15:16:56 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<p>1. Du darfst keinen eigenen Destruktor hinzufügen, da der von std::vector nicht virtual ist, ergo bei einem delete auf den Basisklassenzeiger deiner nicht aufgerufen wird.</p>
</blockquote>
<p>Da der vector private ist, entfällt dieses Problem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166823</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 11 Jan 2012 15:16:56 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Container on Thu, 12 Jan 2012 09:12:56 GMT]]></title><description><![CDATA[<p>Trotzdem zweifelhaftes Design.</p>
<p>Verwendung(&quot;ist implementiert mit&quot;) in form von privater Ableitung wird üblicher weisse nur verwendet, wenn du auf protected Methoden der Ableitung draufmusst. Ansonsten ist Aggregation / Conjunction (member-Variable) immer der bessere Weg !</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167063</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Thu, 12 Jan 2012 09:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Eigener Container on Thu, 12 Jan 2012 11:49:28 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>Trotzdem zweifelhaftes Design.</p>
<p>Verwendung(&quot;ist implementiert mit&quot;) in form von privater Ableitung wird üblicher weisse nur verwendet, wenn du auf protected Methoden der Ableitung draufmusst. Ansonsten ist Aggregation / Conjunction (member-Variable) immer der bessere Weg !</p>
<p>Ciao ...</p>
</blockquote>
<p>Warum?</p>
<p>Dem Grunde nach ist hier an der privaten Ableitung nichts auszusetzen. Ein paar mehr typedefs (value_type,iterator etc.) sollten allerdings mit exportiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167114</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 12 Jan 2012 11:49:28 GMT</pubDate></item></channel></rss>