<?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[referenzübergabe an funktionen und veränderung des vectors]]></title><description><![CDATA[<p>Hallo ich würde gerne wissen ob folgendes keinerlei Probleme im speicher macht....<br />
also sowohl die referenzübergabe des vectors zu beginn da er ja unbelegt ist und so weiter an die funktion als auch das löschen der elemente durch die structure.</p>
<p>Mich interessiert ob wirklich so alles in Ordnung ist....laufen tuts - das weiß ich - nur bei meinem weiteren code verändern sich vektoren ohne grund...und ohne segfault.</p>
<p>ist damit der vector wirklich nach method1 komplett korrekt verändert?</p>
<pre><code class="language-cpp">std::vector&lt;double&gt; vec;

method1(vec);

Class::method1(std::vector&lt;double&gt;&amp; vec)
{
    vec.clear();
    vec.push_back(2.0);
    vec.push_back(5.0);
    vec.push_back(3.3);
    vec.push_back(7.0);
    vec.push_back(5.0);
    vec.push_back(3.3);
    vec.push_back(2.0);
    vec.push_back(5.4);
    vec.push_back(1.3);

    std::vector&lt;bool&gt; mask;
    mask.push_back(false);
    mask.push_back(true);
    mask.push_bak(false);

    vector.erase( std::remove_if( vec.begin(), 
                          vec.end(), 
                          IS_MASKED( vec, mask ) ), 
                          vec.end() );
}

struct IS_MASKED
{
    std::vector&lt; bool &gt; mask_;
    const std::vector&lt; double &gt;* erase_el_;

    IS_MASKED(const std::vector&lt; double &gt;&amp; erase_el, 
              const std::vector&lt; bool &gt;&amp; mask) : erase_el_( &amp;erase_el ), 
                                                 mask_( mask ) 
    {
    }

    bool operator()(const double&amp; f) const
    {
        return mask_[ ( &amp;f - &amp;*erase_el_-&gt;begin() ) % mask_.size() ];
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/161632/referenzübergabe-an-funktionen-und-veränderung-des-vectors</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 22:54:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161632.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Oct 2006 21:32:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to referenzübergabe an funktionen und veränderung des vectors on Sun, 08 Oct 2006 21:34:54 GMT]]></title><description><![CDATA[<p>Hallo ich würde gerne wissen ob folgendes keinerlei Probleme im speicher macht....<br />
also sowohl die referenzübergabe des vectors zu beginn da er ja unbelegt ist und so weiter an die funktion als auch das löschen der elemente durch die structure.</p>
<p>Mich interessiert ob wirklich so alles in Ordnung ist....laufen tuts - das weiß ich - nur bei meinem weiteren code verändern sich vektoren ohne grund...und ohne segfault.</p>
<p>ist damit der vector wirklich nach method1 komplett korrekt verändert?</p>
<pre><code class="language-cpp">std::vector&lt;double&gt; vec;

method1(vec);

Class::method1(std::vector&lt;double&gt;&amp; vec)
{
    vec.clear();
    vec.push_back(2.0);
    vec.push_back(5.0);
    vec.push_back(3.3);
    vec.push_back(7.0);
    vec.push_back(5.0);
    vec.push_back(3.3);
    vec.push_back(2.0);
    vec.push_back(5.4);
    vec.push_back(1.3);

    std::vector&lt;bool&gt; mask;
    mask.push_back(false);
    mask.push_back(true);
    mask.push_bak(false);

    vector.erase( std::remove_if( vec.begin(), 
                          vec.end(), 
                          IS_MASKED( vec, mask ) ), 
                          vec.end() );
}

struct IS_MASKED
{
    std::vector&lt; bool &gt; mask_;
    const std::vector&lt; double &gt;* erase_el_;

    IS_MASKED(const std::vector&lt; double &gt;&amp; erase_el, 
              const std::vector&lt; bool &gt;&amp; mask) : erase_el_( &amp;erase_el ), 
                                                 mask_( mask ) 
    {
    }

    bool operator()(const double&amp; f) const
    {
        return mask_[ ( &amp;f - &amp;*erase_el_-&gt;begin() ) % mask_.size() ];
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1151705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151705</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Sun, 08 Oct 2006 21:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to referenzübergabe an funktionen und veränderung des vectors on Mon, 09 Oct 2006 06:16:26 GMT]]></title><description><![CDATA[<p>In der Funktion selber sehe ich kein Problem - beim Aufruf wird ja ein gültiger Vector an dich übergeben, den du dann verändern kannst (und in der Funktion greifst du auch nur über dessen Memberfunktionen auf seinen Inhalt zu).</p>
<p>Allerdings bin ich mir etwas unsicher, ob der Funktor das macht, was du von ihm erwartest - die Adressberechnung sieht mir reichlich suspekt aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1151748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1151748</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 09 Oct 2006 06:16:26 GMT</pubDate></item></channel></rss>