<?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[Brauche Hilfe bei code]]></title><description><![CDATA[<p>Hallo ich habe eine Matrix die in einem std::vector lnear abgespeichert ist.<br />
Nun möchte ich alle Zeilen der matrix löschen in denen eine Null vorkommt.<br />
Also beispiel:<br />
die matrix:<br />
1 0 4<br />
0 0 0<br />
-2 1 2<br />
0 3 2<br />
0 0 0</p>
<p>das array sieht damit so aus: std::vector = 1 0 4 0 0 0 -2 1 2 0 3 2 0 0 0</p>
<p>die ergebnismatrix sieht dann so aus:<br />
1 0 4<br />
-2 1 2<br />
0 3 2</p>
<p>es wurden also zeile 1 und 4 gelöscht.<br />
der vector sieht so aus: std::vector = 1 0 4 -2 1 2 0 3 2</p>
<p>Irgendwie stelle ich mich da dumm an.</p>
<p>Mein code der das schonmal schafft sieht so aus wobei ich glaub das er sehr ineffizient ist. Für Vorschläge bin ich sehr dankbar!!!</p>
<pre><code class="language-cpp">int offset = 0;
bool found = 0;
for(int row = 0; row &lt; nbr_Matrix_rows; row++)
{   
    for(int col = 0; col &lt; y_dim; col++)
    {
        offset = col + row * y_dim;
        if (tmp_Matrix[offset] != 0)
        {
            erg_Matrix.push_back(tmp_Matrix[offset]);
            continue;
        }
        for(int r = 0; r &lt; nbr_Matrix_rows; r++)
            if(tmp_Matrix[col + r * y_dim] != 0.0)
                found = 1;
        if(found)
             erg_Matrix.push_back(tmp_Matrix[offset]);
        found = 0;
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/157220/brauche-hilfe-bei-code</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 14:53:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157220.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Aug 2006 23:01:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Brauche Hilfe bei code on Wed, 23 Aug 2006 23:01:39 GMT]]></title><description><![CDATA[<p>Hallo ich habe eine Matrix die in einem std::vector lnear abgespeichert ist.<br />
Nun möchte ich alle Zeilen der matrix löschen in denen eine Null vorkommt.<br />
Also beispiel:<br />
die matrix:<br />
1 0 4<br />
0 0 0<br />
-2 1 2<br />
0 3 2<br />
0 0 0</p>
<p>das array sieht damit so aus: std::vector = 1 0 4 0 0 0 -2 1 2 0 3 2 0 0 0</p>
<p>die ergebnismatrix sieht dann so aus:<br />
1 0 4<br />
-2 1 2<br />
0 3 2</p>
<p>es wurden also zeile 1 und 4 gelöscht.<br />
der vector sieht so aus: std::vector = 1 0 4 -2 1 2 0 3 2</p>
<p>Irgendwie stelle ich mich da dumm an.</p>
<p>Mein code der das schonmal schafft sieht so aus wobei ich glaub das er sehr ineffizient ist. Für Vorschläge bin ich sehr dankbar!!!</p>
<pre><code class="language-cpp">int offset = 0;
bool found = 0;
for(int row = 0; row &lt; nbr_Matrix_rows; row++)
{   
    for(int col = 0; col &lt; y_dim; col++)
    {
        offset = col + row * y_dim;
        if (tmp_Matrix[offset] != 0)
        {
            erg_Matrix.push_back(tmp_Matrix[offset]);
            continue;
        }
        for(int r = 0; r &lt; nbr_Matrix_rows; r++)
            if(tmp_Matrix[col + r * y_dim] != 0.0)
                found = 1;
        if(found)
             erg_Matrix.push_back(tmp_Matrix[offset]);
        found = 0;
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1123303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123303</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Wed, 23 Aug 2006 23:01:39 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 05:31:30 GMT]]></title><description><![CDATA[<p>Also wenn du nur die Zeilen rauslöschen möchtest in denen 0,0,0 vorkommt dann würde ich das so machen. Mag sein das es einen effizienteren Weg gibt aber der auf den komme ich just in diesem Moment nicht <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>
<pre><code class="language-cpp">for(int i = 0; i &lt; nbr_Matrix_rows; ++i)
    {
        int idx = i * y_dim;
        bool found = true;

        for(int j = 0; found &amp;&amp; j &lt; y_dim; ++j)
            found = !vec[idx+j];

        if(found)
        {
            vector&lt;int&gt;::iterator it = vec.begin() + idx;
            vec.erase(it,it+y_dim); // löscht die zeile
            --rows;                 // anpassen der zeilen anzahl
            --i;                    // anpassen der aktuellen Zeile
        }
    }
</code></pre>
<p>Wie du siehst ist er nicht viel anders als dein code <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>BR<br />
Vinzenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123337</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Thu, 24 Aug 2006 05:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 05:57:57 GMT]]></title><description><![CDATA[<p>Hi!</p>
<pre><code class="language-cpp">for ( int i = 0; i &lt; rows; ++i )
	{
		std::vector&lt; int &gt;::iterator it = matrix.begin()+i*dim;
		int num = count_if( it, it+dim, std::bind2nd( std::equal_to&lt; int &gt;(), 0 ) );

		if ( num == 3 )
		{
			matrix.erase( it, it+dim );
			--rows;
			--i;
		}
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1123342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123342</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 24 Aug 2006 05:57:57 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 06:12:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for ( std::vector&lt; int &gt;::iterator it = matrix.begin(); it != matrix.end(); )
{
    if ( find_if( it, it + dim, std::bind2nd( std::not_equal_to&lt; int &gt;(), 0 ) ) == it + dim )
        it = matrix.erase( it, it + dim );
    else
        it += dim;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1123345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123345</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Aug 2006 06:12:54 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 06:30:51 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for ( std::vector&lt; int &gt;::iterator it = matrix.begin(); it != matrix.end(); )
{
    if ( find_if( it, it + dim, std::bind2nd( std::not_equal_to&lt; int &gt;(), 0 ) ) == it + dim )
        it = matrix.erase( it, it + dim );
    else
        it += dim;
}
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123360</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Thu, 24 Aug 2006 06:30:51 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 06:37:30 GMT]]></title><description><![CDATA[<p>evilissimo schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for ( std::vector&lt; int &gt;::iterator it = matrix.begin(); it != matrix.end(); )
{
    if ( find_if( it, it + dim, std::bind2nd( std::not_equal_to&lt; int &gt;(), 0 ) ) == it + dim )
        it = matrix.erase( it, it + dim );
    else
        it += dim;
}
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>hat allerdings O(n^2) komplexität. effizienter dürfte</p>
<pre><code class="language-cpp">std::vector&lt; int &gt;::iterator t = matrix.begin();
for ( std::vector&lt; int &gt;::iterator it = t; it != matrix.end(); it += dim )
{
    if ( find_if( it, it + dim, std::bind2nd( std::not_equal_to&lt; int &gt;(), 0 ) ) != it + dim )
    {
        copy( it, it + dim, t );
        t += dim;
    }
}
matrix.erase( t, matrix.end() );
</code></pre>
<p>sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123364</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Aug 2006 06:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 12:21:57 GMT]]></title><description><![CDATA[<p><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="🙂"
    /><br />
Grosses Dankeschön an alle die hier gepostet haben! Ihr seid immer eine grosse klasse Hilfe wenn man vor Lauter Bäumen den Wald kaum mehr sieht <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="🙂"
    /><br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123715</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Thu, 24 Aug 2006 12:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 15:04:04 GMT]]></title><description><![CDATA[<p>Hallo, ich bins nochmal,</p>
<p>habt ihr das auch getestet? wenn ich die ausgangsmatrix nach der schleife ausgebe scheint sich rein gar nichts geändert zu haben.<br />
Ich habe es mit jeder Methode versucht die ihr gepostet habt. AN meiner ausgabe liegt es nicht das habe ich bereits überprüft. Ich lege die Matrix auch nur so an:</p>
<p>std::vector&lt;double&gt; matrix;</p>
<p>und fülle sie dann mit push_back. Mehr auch nicht.</p>
<p>Es kann doch nicht daran liegen dass ich double als type des vectors hernehme...natürlich habe ich die int durch double im code von euch ersetzt.<br />
Er läuft zwar in die Schleifen aber das erase scheint nicht zu klappen...naja ich mach mich mal weiter nach der Fehlersuche.</p>
<p>hier mal mein testcode</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; matrix;
    matrix.push_back(0);
    matrix.push_back(4);
    matrix.push_back(2);
    matrix.push_back(0);
    matrix.push_back(3);
    matrix.push_back(2);
    matrix.push_back(0);
    matrix.push_back(2);
    matrix.push_back(1);
    int dim = 3;
    std::vector&lt; int &gt;::iterator t = matrix.begin(); 
    for ( std::vector&lt; int &gt;::iterator it = t; it != matrix.end(); it += dim ) 
    { 
        if ( find_if( it, it + dim, std::bind2nd( std::not_equal_to&lt; int &gt;(), 0 ) ) != it + dim ) 
        { 
            copy( it, it + dim, t ); 
            t += dim; 
        } 
    } 
    matrix.erase( t, matrix.end() );

    std::cout &lt;&lt; &quot;Test-------------: &quot; &lt;&lt; std::endl;
    std::vector&lt;int&gt;::iterator it2;
    for(it2 = matrix.begin(); it2 != matrix.end(); it2++)
        std::cout &lt;&lt; *it2 &lt;&lt; std::endl
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1123879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123879</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Thu, 24 Aug 2006 15:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 15:42:40 GMT]]></title><description><![CDATA[<p>Zum Testen wäre es wohl gut, wenn wirklich &quot;Nullzeilen&quot; in der Matrix drin wären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123921</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 24 Aug 2006 15:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 15:47:57 GMT]]></title><description><![CDATA[<p><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="😕"
    /><br />
Das sind sie:<br />
000<br />
432<br />
221</p>
<p>ich speichere spaltenweise</p>
<p>ausserdem ändert das nichts an der tatsache.</p>
<p>Folgender code ist da ebenfalls für mich nicht ganz verständlich. Anscheinend hab ichs erase nicht kapiert:</p>
<pre><code class="language-cpp">std::vector&lt;char&gt; alphaVector;
    for( int i=0; i &lt; 10; i++ ) {
        alphaVector.push_back( i + 65 );
    }
    int size = alphaVector.size();
    std::vector&lt;char&gt;::iterator startIterator;
    std::vector&lt;char&gt;::iterator tempIterator;
    std::vector&lt;char&gt;::iterator ittest;
    for( int i=0; i &lt; size-3; i++ ) {
        startIterator = alphaVector.begin();
        alphaVector.erase( startIterator );
   // Display the vector
        //for( tempIterator = alphaVector.begin(); tempIterator != alphaVector.end(); tempIterator++ ) {
          //  std::cout &lt;&lt; *tempIterator;
        //}
        //std::cout &lt;&lt; std::endl;
    }

    for (ittest = alphaVector.begin(); ittest != alphaVector.end(); ittest++ ) 
        std::cout &lt;&lt;  *ittest &lt;&lt; std::endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1123923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123923</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Thu, 24 Aug 2006 15:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 15:46:35 GMT]]></title><description><![CDATA[<p>Mati schrieb:</p>
<blockquote>
<p>ich speichere spaltenweise</p>
</blockquote>
<p>Tja, in deiner ursprünglichen Frage war es ganz offensichtlich zeilenweise. Da sollte es dich nicht wundern, dass das nicht klappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123925</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 24 Aug 2006 15:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 16:36:13 GMT]]></title><description><![CDATA[<p>Sorry mein Fehler. Habe im Anfangsposting gesagt ich speichere zeilenweise<br />
wollte aber posten auf spaltenweise wie ichs eigentlich will. *grmpf</p>
<p>meine ersten versuche den code zu ändern sind ganz schön schwer für nen Anfänger...<br />
das dumme ich ich muss zeilenweise durchlaufen habe aber eine spaltenweise speicherung.</p>
<p>also:<br />
0 0 0<br />
3 2 1<br />
0 0 0</p>
<p>ist so gespeichert: 0 3 0 0 2 0 0 1 0</p>
<p>und soll so ergebnis sein:<br />
3 2 1<br />
und so als ergebnis abgespeichert sein: 3 2 1</p>
<p><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="😕"
    /> <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>ich merke gerade dass das die sache aufwändig macht, da ich es aber leider so brauche wäre es nett wenn wir die sache noch mal aufrollen könnten: Ich glaube zusätzlich dass es nicht in einer Komplexität &lt; O^2 zu lösen ist.<br />
Ein find_if ist jetzt auch nimmer möglich weil ich ja sprünge machen muss.</p>
<p>Danke für erneute Hilfestellungen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123940</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Thu, 24 Aug 2006 16:36:13 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 24 Aug 2006 21:29:19 GMT]]></title><description><![CDATA[<p>bin immer noch dran uns schaffe es nicht das Problem auf eine andere Art zu lösen....bin immer noch dankbar für jede Hilfe <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/1124109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124109</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Thu, 24 Aug 2006 21:29:19 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Fri, 25 Aug 2006 06:37:57 GMT]]></title><description><![CDATA[<p>mir fällt erst einmal so etwas ein:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;
#include &lt;functional&gt;

struct IsMasked
{
    IsMasked(const std::vector&lt; double &gt;&amp; matrix, const std::vector&lt; bool &gt;&amp; mask) : matrix_( &amp;matrix ), mask_( mask ) {}
    bool operator()(const double&amp; f) const
    {
        return mask_[ ( &amp;f - &amp;*matrix_-&gt;begin() ) % mask_.size() ];
    }
    std::vector&lt; bool &gt; mask_;
    const std::vector&lt; double &gt;* matrix_;
};
void erase_null(std::vector&lt; double &gt;&amp; matrix, int x_dim, int&amp; y_dim)
{
    std::vector&lt; bool &gt; mask( y_dim );
    for ( int y = 0; y &lt; y_dim; ++y )
    {
        mask[ y ] = true;
        for ( int x = 0; x &lt; x_dim; ++x )
        {
            if ( matrix[ x * x_dim + y ] != 0 )
            {
                mask[ y ] = false;
                break;
            }
        }
    }
    matrix.erase( std::remove_if( matrix.begin(), matrix.end(), IsMasked( matrix, mask ) ), matrix.end() );
    y_dim = matrix.size() / x_dim;
}

void main()
{
    std::vector&lt;double&gt; matrix;
    matrix.push_back(0);
    matrix.push_back(4);
    matrix.push_back(2);
    matrix.push_back(0);
    matrix.push_back(3);
    matrix.push_back(2);
    matrix.push_back(0);
    matrix.push_back(2);
    matrix.push_back(1);
    int x_dim = 3, y_dim = 3;
    for ( int y = 0; y &lt; y_dim; ++y )
    {
        for ( int x = 0; x &lt; x_dim; ++x )
            std::cout &lt;&lt; matrix[ x * y_dim + y ] &lt;&lt; '\t';
        std::cout &lt;&lt; std::endl;
    }

    std::cout &lt;&lt; &quot;*******&quot; &lt;&lt; std::endl;

    erase_null( matrix, x_dim, y_dim );

    for ( int y = 0; y &lt; y_dim; ++y )
    {
        for ( int x = 0; x &lt; x_dim; ++x )
            std::cout &lt;&lt; matrix[ x * y_dim + y ] &lt;&lt; '\t';
        std::cout &lt;&lt; std::endl;
    }
}
</code></pre>
<p>besonders elegant ist das nicht, aber dafür auch nicht schwer zu verstehen. wollte man hier auch find_if &amp; co einsetzen, müsste man sich einen geeigneten iterator basteln, das ist für diesen einen einsatz allerdings ein wenig overkill.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124208</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 25 Aug 2006 06:37:57 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Fri, 25 Aug 2006 20:23:35 GMT]]></title><description><![CDATA[<p>vielen dank. Ich brauch schon über ne halbe stunde um überhaupt den code zu verstehen <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="🙂"
    /><br />
Ajajaj. Ich darf noch viiiieeel lernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124669</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Fri, 25 Aug 2006 20:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Fri, 25 Aug 2006 20:23:14 GMT]]></title><description><![CDATA[<p>Puh das struct hats in sich <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="🙂"
    /> Wenn jemand schnell vorbeikommt und lust hat mir zu erklären<br />
was genau da passiert bin ich dankbar.<br />
Sehe ich das richtig dass über den aufuf des operators IsMasked() mit den klammern automatisch der ausdruck bool operator() ...ausgewertet wird also der return type bool ist?<br />
Woher kommt aber das const double&amp;f ?<br />
Und warum wird bei matrix.erase( std::remove_if( matrix.begin(), matrix.end(), IsMasked( matrix, mask ) ), matrix.end() );<br />
zweimal ein remove angestellt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124680</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Fri, 25 Aug 2006 20:23:14 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Sat, 26 Aug 2006 09:41:04 GMT]]></title><description><![CDATA[<p>trotz seines namens entfernt remove keine elemente aus dem vector, sondern sortiert nur um. das ergebnis ist eine sequenz, die nur die elemente enthält, für die das übergebene prädikat nicht wahr ist. zurückgegeben wird dabei nur das ende der sequenz, denn der anfang stimmt mit dem input überein. ohne standardalgorithmen könnte das so aussehen:</p>
<pre><code class="language-cpp">int t = 0;
for ( int s = 0; s &lt; matrix.size(); ++s )
    if ( !mask[ s % y_dim ] )
        matrix[ t++ ] = matrix[ s ];
matrix.resize( t );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1124817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124817</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 26 Aug 2006 09:41:04 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Wed, 30 Aug 2006 18:26:31 GMT]]></title><description><![CDATA[<p>danke camper,</p>
<p>das habe ich nun soweit begriffen. Aber könntest du/ihr mir noch kurz das struct erklären. Ich blick vor allem beim bool operator net ganz durch <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=":/"
      alt="😕"
    /></p>
<pre><code class="language-cpp">struct IsMasked 
 { 
     IsMasked(const std::vector&lt; double &gt;&amp; matrix, const std::vector&lt; bool &gt;&amp; mask) : matrix_( &amp;matrix ), mask_( mask ) {} 
     bool operator()(const double&amp; f) const 
     { 
         return mask_[ ( &amp;f - &amp;*matrix_-&gt;begin() ) % mask_.size() ]; 
     } 
     std::vector&lt; bool &gt; mask_; 
     const std::vector&lt; double &gt;* matrix_; 
 };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1127869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1127869</guid><dc:creator><![CDATA[ggggg]]></dc:creator><pubDate>Wed, 30 Aug 2006 18:26:31 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 31 Aug 2006 07:14:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">mask_[ ( &amp;f - &amp;*matrix_-&gt;begin() ) % mask_.size() ]
</code></pre>
<p>entspricht dem ausdruck</p>
<pre><code class="language-cpp">mask[ s % y_dim ]
</code></pre>
<p>in der version mit schleife. die schwierigkeit ist, an den index s heranzukommen. hierbei nutze ich aus, dass vector seine daten kontinuierlich speichert, und nutze pointerarithmetik.<br />
ich hätte auch</p>
<pre><code class="language-cpp">mask_[ ( &amp;f - &amp;(*matrix_)[0] ) % mask_.size() ]
</code></pre>
<p>schreiben können, aber ich bin kein großer fan von vermeidbaren klammern <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/1128105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128105</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 31 Aug 2006 07:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to Brauche Hilfe bei code on Thu, 31 Aug 2006 19:20:06 GMT]]></title><description><![CDATA[<p>danke <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="🙂"
    /><br />
das f ist mein Problemfall...<br />
woher stammt das f ?<br />
ich verstehe nicht ganz wo der operator angewandt wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128698</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Thu, 31 Aug 2006 19:20:06 GMT</pubDate></item></channel></rss>