<?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[Bestimmte Spalte in zweidimensionalem Vektor löschen]]></title><description><![CDATA[<p>Hallo liebe Programmierer,</p>
<p>nachdem ich mir nun mehrere tage den Kopf zerbrochen habe, hoffe ich, dass mir einer von euch weiter helfen kann.</p>
<p>Ich habe einen zweidimensionalen Vektor &quot;Matrix&quot;, welcher 3 Reihen und 24 Spalten hat. In der oberen Spalte sind Werte nach diesem Prinzip angeordnet: 0 0 1 1 2 2.. und in den nächsten beiden Spalten befinden sich Werte, die sich auf den jeweiligen Wert in der ersten Spalte beziehen. Nun möchte ich Spalten löschen, die einen bestimmten Wert in der 1. Zeile enthalten, z. B. die Spalten, die den Wert 1 in der 1. Zeile enthalten. Wie mache ich das am besten? Hier ist mein Code, der bisher am besten funktioniert, jedoch nur eine Spalte löscht. Was ist der Fehler? Oder muss ich es ganz anders machen?</p>
<pre><code>vector&lt;double&gt;::iterator it=matrix[0].begin(), end = matrix[0].end();

	vector&lt;int&gt; Löschen; double pos;
	double Wert= matrix[0][position]; //position habe ich vorher bestimmt 
	cout &lt;&lt; &quot;Wert&quot; &lt;&lt; Wert;

	for (int i=0; i &lt; matrix[0].size(); i++)
	{

	if (matrix[0][i]==Wert)
	{
		int pop = matrix[0][i];
		it = find(matrix[0].begin(),matrix[0].end(),pop);
		pos = distance (matrix[0].begin(),it);

				for (unsigned i = 0; i &lt; matrix.size(); ++i)
				{
				if (matrix[i].size() &gt; pos)
					{
					matrix[i].erase(matrix[i].begin() + pos);

					}
				}
				it1=matrix[0].begin();
		}

	}
</code></pre>
<p>Ich hoffe, mir kann jemand helfen, damit ich wieder schlafen kann <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/topic/316303/bestimmte-spalte-in-zweidimensionalem-vektor-löschen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 08:23:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316303.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Apr 2013 19:27:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bestimmte Spalte in zweidimensionalem Vektor löschen on Sun, 28 Apr 2013 20:20:16 GMT]]></title><description><![CDATA[<p>Hallo liebe Programmierer,</p>
<p>nachdem ich mir nun mehrere tage den Kopf zerbrochen habe, hoffe ich, dass mir einer von euch weiter helfen kann.</p>
<p>Ich habe einen zweidimensionalen Vektor &quot;Matrix&quot;, welcher 3 Reihen und 24 Spalten hat. In der oberen Spalte sind Werte nach diesem Prinzip angeordnet: 0 0 1 1 2 2.. und in den nächsten beiden Spalten befinden sich Werte, die sich auf den jeweiligen Wert in der ersten Spalte beziehen. Nun möchte ich Spalten löschen, die einen bestimmten Wert in der 1. Zeile enthalten, z. B. die Spalten, die den Wert 1 in der 1. Zeile enthalten. Wie mache ich das am besten? Hier ist mein Code, der bisher am besten funktioniert, jedoch nur eine Spalte löscht. Was ist der Fehler? Oder muss ich es ganz anders machen?</p>
<pre><code>vector&lt;double&gt;::iterator it=matrix[0].begin(), end = matrix[0].end();

	vector&lt;int&gt; Löschen; double pos;
	double Wert= matrix[0][position]; //position habe ich vorher bestimmt 
	cout &lt;&lt; &quot;Wert&quot; &lt;&lt; Wert;

	for (int i=0; i &lt; matrix[0].size(); i++)
	{

	if (matrix[0][i]==Wert)
	{
		int pop = matrix[0][i];
		it = find(matrix[0].begin(),matrix[0].end(),pop);
		pos = distance (matrix[0].begin(),it);

				for (unsigned i = 0; i &lt; matrix.size(); ++i)
				{
				if (matrix[i].size() &gt; pos)
					{
					matrix[i].erase(matrix[i].begin() + pos);

					}
				}
				it1=matrix[0].begin();
		}

	}
</code></pre>
<p>Ich hoffe, mir kann jemand helfen, damit ich wieder schlafen kann <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/2319480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319480</guid><dc:creator><![CDATA[beginner58]]></dc:creator><pubDate>Sun, 28 Apr 2013 20:20:16 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Spalte in zweidimensionalem Vektor löschen on Sun, 28 Apr 2013 20:36:17 GMT]]></title><description><![CDATA[<p>Ich habe nun nochmal die if-Bedíngung geändert auf</p>
<pre><code>if (matrix[0][i]==matrix[0][Wert])
</code></pre>
<p>Und jetzt geht es. Oder geht ist das falsch gedacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319498</guid><dc:creator><![CDATA[beginner58]]></dc:creator><pubDate>Sun, 28 Apr 2013 20:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Spalte in zweidimensionalem Vektor löschen on Mon, 29 Apr 2013 20:10:58 GMT]]></title><description><![CDATA[<blockquote>
<p>In der oberen Spalte</p>
</blockquote>
<p><em>Oberen</em> Spalte? <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>
<blockquote>
<p>Nun möchte ich Spalten löschen, die einen bestimmten Wert in der 1. Zeile enthalten, z. B. die Spalten, die den Wert 1 in der 1. Zeile enthalten. Wie mache ich das am besten?</p>
</blockquote>
<p>Durch gehen und löschen?</p>
<pre><code>for( auto iter = matrix.begin(); iter != matrix.end() ; ++iter )
    if( (*iter)[0] == 1 )
        iter = matrix.erase( iter );
</code></pre>
<p>(Ungetestet!)<br />
Vorausgesetzt du meinst tatsächlich Spalten.</p>
<p>Edit: Ach, du willst die Vektoren der zweiten Dimension prüfen. Gut, dann geht das so nicht, da brauchst du tatsächlich eine Schleife die den ersten Index 0 und den zweiten variable setzt.</p>
<pre><code>for( std::size_t y = 0; y &lt; matrix.size() ; ++y ) 
    if( matrix[0][y] == 1 ) 
    {
        for( std::size_t x = 0; x &lt; matrix[0].size() ; ++x )
            matrix[x].erase( matrix[x].begin() + y );
        --y; // Wichtig!
    }
</code></pre>
<p>Oder so in der Richtung, ist ungetestet. Sollte aber gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319515</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 29 Apr 2013 20:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Spalte in zweidimensionalem Vektor löschen on Mon, 29 Apr 2013 20:06:20 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Antwort.</p>
<p>Allerdings wird auf diese Weise bei mir immer nur die erste der beiden Spalte mit dem gesuchten Wert gelöscht.</p>
<p>Ich denke es liegt an der if-Bedingung. ich weiß nicht, wie ich ausdrücke, dass in der Matrix der Wert x (welcher sich auch bei jeder Iteration ändert) an der Position matrix[0][i] stehen muss.<br />
Scheinbar ist diese Version</p>
<pre><code>if (matrix[0][i]==matrix[0][Wert])
</code></pre>
<p>ja falsch, um zu prüfen, ob z.B. matrix[0][i] den Wert 10 enthält. Irgendwann wird dann nämlich immer eine &quot;Vector out of range exception&quot; angezeigt. Nur wie mache ich es dann???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319739</guid><dc:creator><![CDATA[beginner58]]></dc:creator><pubDate>Mon, 29 Apr 2013 20:06:20 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Spalte in zweidimensionalem Vektor löschen on Mon, 29 Apr 2013 20:11:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Allerdings wird auf diese Weise bei mir immer nur die erste der beiden Spalte mit dem gesuchten Wert gelöscht.</p>
</blockquote>
<p>War ein kleiner Fehler drin. Geht's jetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319741</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 29 Apr 2013 20:11:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Spalte in zweidimensionalem Vektor löschen on Wed, 01 May 2013 17:56:18 GMT]]></title><description><![CDATA[<p>Nee, leider immer noch nicht so richtig.<br />
Habe es jetzt so gemacht:</p>
<pre><code>if (matrix[0][i]==matrix[0][i==Wert])
</code></pre>
<p>und so funktioniert es, außer, wenn an der Wert 0 ist, wird dieser immer nur einmal gelöscht und ich verstehe nicht, wieso. Kann mir da jemand weiter helfen?</p>
<p>Der ganze Code</p>
<pre><code>double Wert= matrix[0][position];
	cout &lt;&lt; &quot;Job&quot; &lt;&lt; Wert;

	for (int i=0; i &lt; matrix[0].size(); ++i)
	{

	if (matrix[0][i]==matrix[0][i==Wert])
	{

		it1 = find(matrix[0].begin(),matrix[0].end(),Wert);
		pos = distance (matrix[0].begin(),it1);

				for (unsigned i = 0; i &lt; matrix.size(); i++)
				{
				if (matrix[i].size() &gt; pos)
					{
					matrix[i].erase(matrix[i].begin() + pos);

					}
				}
				it1=matrix[0].begin();
		}

	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2320144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320144</guid><dc:creator><![CDATA[beginner58]]></dc:creator><pubDate>Wed, 01 May 2013 17:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to Bestimmte Spalte in zweidimensionalem Vektor löschen on Wed, 01 May 2013 18:11:00 GMT]]></title><description><![CDATA[<p>Sorry, ich habe die Änderung in deinem vorherigen Beitrag zuerst übersehen.</p>
<p>Jetzt funktioniert es! Vielen vielen Dank für deine Hilfe!!!! Du hast mir unglaublich weiter geholfen! <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/2320149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320149</guid><dc:creator><![CDATA[beginner58]]></dc:creator><pubDate>Wed, 01 May 2013 18:11:00 GMT</pubDate></item></channel></rss>