<?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[Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many;]]></title><description><![CDATA[<p>habe aber jetzt folgenden Code zum laufen gebracht...</p>
<pre><code>#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;list&gt;
#include &lt;boost/any.hpp&gt;
#include &lt;stdio.h&gt;

using boost::any_cast;
typedef std::list&lt;boost::any&gt; many;

/*
struct property
{
    property();
    property(const std::string &amp;, const boost::any &amp;);

    std::string name;
    boost::any value;
};

typedef std::list&lt;property&gt; properties;
*/

// append_xxxx

void append_int(many &amp; values, int value)
{
    boost::any to_append = value;
    values.push_back(to_append);
}

void append_string(many &amp; values, const std::string &amp; value)
{
    values.push_back(value);
}

void append_char_ptr(many &amp; values, const char * value)
{
    values.push_back(value);
}

void append_any(many &amp; values, const boost::any &amp; value)
{
    values.push_back(value);
}

void append_nothing(many &amp; values)
{
    values.push_back(boost::any());
}

/// IS_xxxxx

bool is_empty(const boost::any &amp; operand)
{
    return operand.empty();
}

bool is_int(const boost::any &amp; operand)
{
    return operand.type() == typeid(int);
}

bool is_char_ptr(const boost::any &amp; operand)
{
    try
    {
        any_cast&lt;const char *&gt;(operand);
        return true;
    }
    catch(const boost::bad_any_cast &amp;)
    {
        return false;
    }
}

bool is_string(const boost::any &amp; operand)
{
    return any_cast&lt;std::string&gt;(&amp;operand);
}

//  count_all

void count_all(many &amp; values, std::ostream &amp; out)
{
    out &lt;&lt; &quot;#empty == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_empty) &lt;&lt; std::endl;
    out &lt;&lt; &quot;#int == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_int) &lt;&lt; std::endl;
    out &lt;&lt; &quot;#const char * == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_char_ptr) &lt;&lt; std::endl;
    out &lt;&lt; &quot;#string == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_string) &lt;&lt; std::endl;
}

int main()
{

  many values;

  append_int(values,3);
  append_int(values,1);
  append_int(values,4);
  append_int(values,5);
  append_int(values,6);
  append_int(values,8856);

  append_any(values,23223);

  append_string(values,&quot;test&quot;);
  append_string(values,&quot;asa&quot;);
  append_string(values,&quot;tast&quot;);
  append_string(values,&quot;sd&quot;);
  append_string(values,&quot;ddsdt&quot;);

  append_any(values,&quot;tste&quot;);  //wird irgendwie nicht mitgezählt

  std::cout &lt;&lt; std::count_if(values.begin(), values.end(), is_int)&lt;&lt;std::endl;  // 7
  std::cout &lt;&lt; std::count_if(values.begin(), values.end(), is_string)&lt;&lt;std::endl; // 5

 return 0;
}
</code></pre>
<p>wie es scheint speichert er die werte jeweils in values ab...<br />
mitm Zählen happert es etwas... woran kann das liegen??</p>
<p>die Int Werte zählt er richtig, aber die String Werte nicht...<br />
registriert der die</p>
<pre><code>append_any(values,&quot;tste&quot;);
</code></pre>
<p>nicht als string??<br />
wieso macht er es dann bei der Zeile</p>
<pre><code>append_any(values,23223);
</code></pre>
<p>???</p>
<p>nun wollte ich die gesammte Liste auf der Console ausgeben...<br />
nur habe ich keinen Plan wie das geht...<br />
hat jemand entsprechenden Code dafür??<br />
gibt es sowas wie count_if auch für die Ausgabe??<br />
wo ist dieses count_if definiert???<br />
in Boost??<br />
finde leider in der Boost Hilfe nichts zu dem count_if<br />
und in den man Pages auch nicht...</p>
<p>wie kann ich auf einzelne Elemente zugreifen in der Liste??</p>
<p>benötige ich dafür wieder einen Iterator??<br />
wenn ja, wie erzeuge ich den für list<a href="boost::any" rel="nofollow">boost::any</a> ??<br />
und wie sieht dann der code zur ausgabe der Liste aus??</p>
<p>merci schon mal</p>
<p>ufosworld</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185057/probleme-mit-typedef-std-list-lt-boost-any-gt-many</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 04:14:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185057.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Jun 2007 14:16:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Thu, 21 Jun 2007 14:16:52 GMT]]></title><description><![CDATA[<p>habe aber jetzt folgenden Code zum laufen gebracht...</p>
<pre><code>#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;list&gt;
#include &lt;boost/any.hpp&gt;
#include &lt;stdio.h&gt;

using boost::any_cast;
typedef std::list&lt;boost::any&gt; many;

/*
struct property
{
    property();
    property(const std::string &amp;, const boost::any &amp;);

    std::string name;
    boost::any value;
};

typedef std::list&lt;property&gt; properties;
*/

// append_xxxx

void append_int(many &amp; values, int value)
{
    boost::any to_append = value;
    values.push_back(to_append);
}

void append_string(many &amp; values, const std::string &amp; value)
{
    values.push_back(value);
}

void append_char_ptr(many &amp; values, const char * value)
{
    values.push_back(value);
}

void append_any(many &amp; values, const boost::any &amp; value)
{
    values.push_back(value);
}

void append_nothing(many &amp; values)
{
    values.push_back(boost::any());
}

/// IS_xxxxx

bool is_empty(const boost::any &amp; operand)
{
    return operand.empty();
}

bool is_int(const boost::any &amp; operand)
{
    return operand.type() == typeid(int);
}

bool is_char_ptr(const boost::any &amp; operand)
{
    try
    {
        any_cast&lt;const char *&gt;(operand);
        return true;
    }
    catch(const boost::bad_any_cast &amp;)
    {
        return false;
    }
}

bool is_string(const boost::any &amp; operand)
{
    return any_cast&lt;std::string&gt;(&amp;operand);
}

//  count_all

void count_all(many &amp; values, std::ostream &amp; out)
{
    out &lt;&lt; &quot;#empty == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_empty) &lt;&lt; std::endl;
    out &lt;&lt; &quot;#int == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_int) &lt;&lt; std::endl;
    out &lt;&lt; &quot;#const char * == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_char_ptr) &lt;&lt; std::endl;
    out &lt;&lt; &quot;#string == &quot;
        &lt;&lt; std::count_if(values.begin(), values.end(), is_string) &lt;&lt; std::endl;
}

int main()
{

  many values;

  append_int(values,3);
  append_int(values,1);
  append_int(values,4);
  append_int(values,5);
  append_int(values,6);
  append_int(values,8856);

  append_any(values,23223);

  append_string(values,&quot;test&quot;);
  append_string(values,&quot;asa&quot;);
  append_string(values,&quot;tast&quot;);
  append_string(values,&quot;sd&quot;);
  append_string(values,&quot;ddsdt&quot;);

  append_any(values,&quot;tste&quot;);  //wird irgendwie nicht mitgezählt

  std::cout &lt;&lt; std::count_if(values.begin(), values.end(), is_int)&lt;&lt;std::endl;  // 7
  std::cout &lt;&lt; std::count_if(values.begin(), values.end(), is_string)&lt;&lt;std::endl; // 5

 return 0;
}
</code></pre>
<p>wie es scheint speichert er die werte jeweils in values ab...<br />
mitm Zählen happert es etwas... woran kann das liegen??</p>
<p>die Int Werte zählt er richtig, aber die String Werte nicht...<br />
registriert der die</p>
<pre><code>append_any(values,&quot;tste&quot;);
</code></pre>
<p>nicht als string??<br />
wieso macht er es dann bei der Zeile</p>
<pre><code>append_any(values,23223);
</code></pre>
<p>???</p>
<p>nun wollte ich die gesammte Liste auf der Console ausgeben...<br />
nur habe ich keinen Plan wie das geht...<br />
hat jemand entsprechenden Code dafür??<br />
gibt es sowas wie count_if auch für die Ausgabe??<br />
wo ist dieses count_if definiert???<br />
in Boost??<br />
finde leider in der Boost Hilfe nichts zu dem count_if<br />
und in den man Pages auch nicht...</p>
<p>wie kann ich auf einzelne Elemente zugreifen in der Liste??</p>
<p>benötige ich dafür wieder einen Iterator??<br />
wenn ja, wie erzeuge ich den für list<a href="boost::any" rel="nofollow">boost::any</a> ??<br />
und wie sieht dann der code zur ausgabe der Liste aus??</p>
<p>merci schon mal</p>
<p>ufosworld</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310744</guid><dc:creator><![CDATA[UFOSWORLD]]></dc:creator><pubDate>Thu, 21 Jun 2007 14:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Thu, 21 Jun 2007 15:46:57 GMT]]></title><description><![CDATA[<p>Um einen std::string in einem any zu Speichern musst du ihm auch ein std::string-Objekt übergeben und keine Zeichenkette <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
<p>Und noch was:</p>
<pre><code class="language-cpp">template&lt; typename type &gt;
bool is( const boost::any&amp; operand )
{
  return operand.type() == typeid( type );
}
</code></pre>
<p>ist doch viel schöner als deine ganzen Code-Duplikate. Gleiches gilt für append.</p>
<p>Edit:</p>
<p>Zu deinen Fragen bezüglich std::list<br />
Wie wäre es wenn du dir einfach mal die Doku oder ein Tutorial über std::list bzw. die STL zu Gemüte führst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
<p>Und ein count_if tut genau das was der Name sagt. Eine bedingte Ausgabe würde wohl print_if heißen und die müsstest du selber schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310819</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Thu, 21 Jun 2007 15:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Thu, 21 Jun 2007 15:45:05 GMT]]></title><description><![CDATA[<p>Wie du an dem Präfix std:: erkennst, gehört count_if() nicht zu Boost, sondern zur C++ Standard-Bibliothek. Und auf die Elemente zugreifen kannst du mit einem ganz normalen Listen-Iterator <code>for(manyiterator p=values.begin();p!=values.end;++p) mach_was(*p);</code> (ich bin mir nicht sicher, ob du den Inhalt eines any direkt ausgeben kannst).</p>
<p>PS: Zeichenketten-Literale sind in C++ keine std::string's, sondern 'const char*', also sollte der Eintrag &quot;tste&quot; als 'char_ptr' gezählt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310821</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 21 Jun 2007 15:45:05 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Fri, 22 Jun 2007 07:19:55 GMT]]></title><description><![CDATA[<p>danke schon mal für die antworten... das mit count_if hab ich dann 10 minuten später selbst rausgefunden....</p>
<p>und zu dem</p>
<pre><code>(ich bin mir nicht sicher, ob du den Inhalt eines any direkt ausgeben kannst).
</code></pre>
<p>da scheinst du nicht der einzige zu sein <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>
<p>werde das mal a weng ausprobieren... wie ich das hinbastel das ich das rauswerfe wenn ich any datentyp ausgeben will</p>
<p>merci euch beiden</p>
<p>ufosworld <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/1311188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311188</guid><dc:creator><![CDATA[UFOSWORLD]]></dc:creator><pubDate>Fri, 22 Jun 2007 07:19:55 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Fri, 22 Jun 2007 08:29:58 GMT]]></title><description><![CDATA[<p>also, hab das jetzt eingebaut.. ( die for-Schleife)</p>
<p>und wollte den Iterator ausgeben... aber das geht nicht...</p>
<p>also weder</p>
<pre><code>std::cout &lt;&lt; *it &lt;&lt;std:endl;
</code></pre>
<p>geht, noch</p>
<pre><code>std::cout &lt;&lt; it &lt;&lt;std:endl;
</code></pre>
<p>geht, noch</p>
<pre><code>std::cout &lt;&lt; values.it &lt;&lt;std:endl;
</code></pre>
<p>geht.</p>
<p>bei</p>
<pre><code>std::cout &lt;&lt; &amp;it &lt;&lt;std:endl;
</code></pre>
<p>wirft er mit 12 mal die adresse raus, in der it gespeichert ist...</p>
<p>aber leider schaff ich es nicht die gespeicherten Werte auszugeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Irgendwelche Vorschläge? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>grüsse UFOSWORLD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311226</guid><dc:creator><![CDATA[UFOSWORLD]]></dc:creator><pubDate>Fri, 22 Jun 2007 08:29:58 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Fri, 22 Jun 2007 11:07:39 GMT]]></title><description><![CDATA[<p>Versuch mal:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; boost::any_cast&lt;std::string&gt;(*it) &lt;&lt; std::endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1311357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311357</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Fri, 22 Jun 2007 11:07:39 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 09:03:42 GMT]]></title><description><![CDATA[<p>Ok das geht soweit...<br />
nun wollte ich in der Liste gespeicherte Werte verändern/tauschen</p>
<p>hab da den Befehl swap bei List gefunden</p>
<p>aber wie der Code hier aussieht kann man mit dem Swap Befehl nur ganze Listen tauschen</p>
<pre><code>// swap lists
#include &lt;iostream&gt;
#include &lt;list&gt;
using namespace std;

main ()
{
  list&lt;int&gt; first (3,100);   // three ints with a value of 100
  list&lt;int&gt; second (5,200);  // five ints with a value of 200
  list&lt;int&gt;::iterator it;

  first.swap(second);

  cout &lt;&lt; &quot;first contains:&quot;;
  for (it=first.begin(); it!=first.end(); it++) cout &lt;&lt; &quot; &quot; &lt;&lt; *it;

  cout &lt;&lt; &quot;\nsecond contains:&quot;;
  for (it=second.begin(); it!=second.end(); it++) cout &lt;&lt; &quot; &quot; &lt;&lt; *it;

  cout &lt;&lt; endl;

  return 0;
}
</code></pre>
<p>gibt es auch eine Funktion mit der ich direkt auf die Elemente der liste zugreifen und diese verändern kann.</p>
<p>Will folgendes machen können.<br />
- Werte tauschen innerhalb der Liste<br />
- Werte verändern<br />
- Werte in neuer Liste an andere Position schreiben</p>
<p>gruss UFO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313828</guid><dc:creator><![CDATA[UFOSWORLD]]></dc:creator><pubDate>Tue, 26 Jun 2007 09:03:42 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 09:27:44 GMT]]></title><description><![CDATA[<p>Wenn du zwei Iteratoren hast, kannst du mit</p>
<pre><code class="language-cpp">std::iter_swap(it1, it2);
</code></pre>
<p>die Inhalte vertauschen (also nicht die Iteratoren werden getauscht, sondern die Daten auf die die Iteratoren &quot;zeigen&quot;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313840</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 26 Jun 2007 09:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 09:31:41 GMT]]></title><description><![CDATA[<p>Zum ändern kannst du ja einfach den entsprechenden Iterator verwenden.<br />
Einfügen geht z.Bsp. über insert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313848</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 26 Jun 2007 09:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 12:29:23 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>Wenn du zwei Iteratoren hast, kannst du mit</p>
<pre><code class="language-cpp">std::iter_swap(it1, it2);
</code></pre>
<p>die Inhalte vertauschen (also nicht die Iteratoren werden getauscht, sondern die Daten auf die die Iteratoren &quot;zeigen&quot;).</p>
</blockquote>
<p>mhh irgendwie geht da was nicht...<br />
habe zwei iteratoren . einer heisst it und zeigt auf begin() und der andere heisst endit und zeigt auf end()<br />
erzeugt hab ich die mit folgendem befehlen:</p>
<pre><code>many::iterator it     = values.begin();  //erzeuge Iterator it und setze auf values.begin()
many::iterator endit  = values.end();    //erzeuge Iterator endIt und setzte auf values.end()
</code></pre>
<p>wobei beide auf die folgende Struktur verweisen...</p>
<pre><code>using boost::any_cast;
typedef std::list&lt;boost::any&gt; many; 
many values; 

using namespace std;
</code></pre>
<p>die liste wurde vorher mit werten befüllt...</p>
<pre><code>append_int(values,0);
    append_int(values,1);
    append_int(values,4);
    append_int(values,5);
    append_int(values,6);
    append_int(values,8856);
    append_any(values,12322131);
    append_string(values,&quot;012345678901234567890123456789&quot;);
    append_string(values,&quot;asa&quot;);
    append_string(values,&quot;tast&quot;);
    append_string(values,&quot;sd&quot;);
</code></pre>
<p>so funktioniert ausgabe der Liste einwandfrei..</p>
<p>kompilieren kann er es ... aber beim Ausführen kackt er ab <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
wenn ich programm ausführe und<br />
die beiden tauschen möchte dann kommt nur immer die Meldung: Abbruch</p>
<p>was is da falsch dran?</p>
<p>p.s. #include &lt;algorithm&gt; ist auch mit dabei <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/1313969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313969</guid><dc:creator><![CDATA[UFOSWORLD]]></dc:creator><pubDate>Tue, 26 Jun 2007 12:29:23 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 12:52:07 GMT]]></title><description><![CDATA[<p>end zeigt hinter das letzte Element, also auf kein Gültiges element. Wenn du das versuchst zu tauschen ist ist das nicht so toll</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313983</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Tue, 26 Jun 2007 12:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 12:58:14 GMT]]></title><description><![CDATA[<p>Helium schrieb:</p>
<blockquote>
<p>end zeigt hinter das letzte Element, also auf kein Gültiges element. Wenn du das versuchst zu tauschen ist ist das nicht so toll</p>
</blockquote>
<p>merci... das hab ich dann auch rausgefunden...</p>
<p>hier die eine Lösung..</p>
<pre><code>vector&lt;int&gt;::iterator first = v.begin(), last  = v.end();

--last; // auf letztes Element zeigen lassen

iter_swap(first, last);         // Tausch
</code></pre>
<p>aber schon komisch... hab rumgesurft und fast überall wo das erste mit dem letzten Element getauscht wird... steht die Lösung</p>
<p>iter_swap(first, last);</p>
<p>ohne das --last;</p>
<p>ab und zu steht auch sowas dort:</p>
<p>iter_swap(v.begin(),v.end()-1);</p>
<p>nur da kackt er gleich beim kompilieren ab... das frisst mein kompiler gar nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313987</guid><dc:creator><![CDATA[UFOSWORLD]]></dc:creator><pubDate>Tue, 26 Jun 2007 12:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 13:02:09 GMT]]></title><description><![CDATA[<p>UFOSWORLD schrieb:</p>
<blockquote>
<p>aber schon komisch... hab rumgesurft und fast überall wo das erste mit dem letzten Element getauscht wird... steht die Lösung</p>
<p>iter_swap(first, last);</p>
<p>ohne das --last;</p>
</blockquote>
<p>Bei sowas mußt du vermutlich auch gucken, wie first und last definiert sind (manche Autoren definieren Bereiche mit einschließlichen Grenzen - d.h. last zeigt <strong>auf</strong> das letzte Element und nicht dahinter).</p>
<blockquote>
<p>ab und zu steht auch sowas dort:</p>
<p>iter_swap(v.begin(),v.end()-1);</p>
<p>nur da kackt er gleich beim kompilieren ab... das frisst mein kompiler gar nicht...</p>
</blockquote>
<p>Ja, sowas geht auch nur mit Random Acess Iteratoren - und list&lt;&gt; hat &quot;nur&quot; bidirektionale Iteratoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313993</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 26 Jun 2007 13:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 13:14:48 GMT]]></title><description><![CDATA[<p>iter_swap benötigt Forward-Iteratoren und sollte so auch problemlos mit list gehen. Im Josuttis ist sogar ein Beispiel damit. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1313999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1313999</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 26 Jun 2007 13:14:48 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 13:19:36 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>iter_swap benötigt Forward-Iteratoren und sollte so auch problemlos mit list gehen. Im Josuttis ist sogar ein Beispiel damit. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>iter_swap ja, aber was ist mit dem Ausdruck &quot;v.end()-1&quot;... <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>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314003</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 26 Jun 2007 13:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 13:34:26 GMT]]></title><description><![CDATA[<p>list::end() liefert einen bidirektionalen Iterator auf eine Position hinter dem letzten Element. Es sollte also gehen. Obwohl mir, ehrlich gesagt, der Ausdruck nicht gefällt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314024</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 26 Jun 2007 13:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 13:43:18 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>list::end() liefert einen bidirektionalen Iterator auf eine Position hinter dem letzten Element.</p>
</blockquote>
<p>Und deshalb klappt der Ausdruck &quot;end()-1&quot; gerade <em>nicht</em> - eine Subraktion von Iteratoren ist nur für Random Access Iteratoren definiert, bei bidirektionalen könntest du höchstens advance() verwenden: <code>iter_swap(v.begin(),advance(v.end(),-1));</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314036</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 26 Jun 2007 13:43:18 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Tue, 26 Jun 2007 14:01:45 GMT]]></title><description><![CDATA[<p>Ok, das ist richtig.<br />
aber --v.end() sollte gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314052</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 26 Jun 2007 14:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Wed, 27 Jun 2007 09:01:07 GMT]]></title><description><![CDATA[<p>Ok danke euch allen erst mal für die Antworten.</p>
<p>Es funktioniert perfekt... aber nur wenn ich Elemente gleichen Datentyps tauschen möchte.</p>
<p>Boost::Any hat ja den Vorteil das man da erstmal alles reinpacken kann...<br />
er identifiziert das dann entsprechend...</p>
<p>jetzt wollte ich ein String Element am Anfang mit einem IntegerWert am Ende tauschen.... aber da bringt er wieder nur ABBRUCH.</p>
<p>auch habe ich probiert die Werte jeweils im Datentyp Any zu speichern,<br />
nur er wandelt z.b.</p>
<p>append_any(values,&quot;Test&quot;); intern in einen Char_Ptr um<br />
und<br />
append_any(values,12345); intern in einen Integer Wert um<br />
und<br />
append_string(values,&quot;Test&quot;); ist von der definition her schon ein String Wert.</p>
<p>stösst hier iter_swap an seine Grenzen und gibt es eine Möglichkeit diese Werte trotzdem zu tauschen?</p>
<p>desweiteren nervt etwas, das man nicht it = it+5; machen kann<br />
sondern 5 mal it++; machen muss , wenn man auf das 6te Element navigieren möchte... um dieses z.b. zu removen...</p>
<p>merci schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314573</guid><dc:creator><![CDATA[UFOSWORLD]]></dc:creator><pubDate>Wed, 27 Jun 2007 09:01:07 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit typedef std::list&amp;lt;boost::any&amp;gt; many; on Wed, 27 Jun 2007 09:10:33 GMT]]></title><description><![CDATA[<p>Wenn du sehr viel Wert darauf legst, direkt über den Index auf die Elemente zugreifen zu können, ist list&lt;&gt; wohl die falsche Wahl - Direktzugriff bieten (von den std-Containern) nur vector&lt;&gt; und deque&lt;&gt;.</p>
<p>PS: Die einzigen Grenzen, an die iter_swap() stoßen könnte, sind singuläre Iteratoren (v.end()) oder falsche Kopier-Semantik (aber das wäre ein Problem von any).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314578</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 27 Jun 2007 09:10:33 GMT</pubDate></item></channel></rss>