Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vektoren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.12.2011, 06:16 Uhr
mo.base



Hallo Leute,

kann mir bitte jemande helfen..????

ich habe einen vector in der Klasse Baum und versuche im Folgendem die ungeraden int Werte mit modulo in der for-Schleife "herauszufiltern", kriege aber Fehler beim Comipieren...kann mir bitte jemand helfen? Danke im Voraus!!

class Baum{
string searchstring;
vector<int>keys;
...

in der main(){
Baum baum5;

for(int i=(baum5->keys.size()%2); ;i++){
baum5.remove(i);
}

...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.12.2011, 08:42 Uhr
ao

(Operator)


Hi, mo.base, da sind gleich mehrere Fehler.

1. baum5 ist ein Objekt vom Typ Baum, kein Zeiger auf Baum. Deshalb heißt es baum5.keys und nicht baum5->keys.

2. Die Schleife ist falsch formuliert. Wenn du mit jedem Keys-Element irgendwas machen willst, dann geht das so:


C++:
for (int i = 0; i < baum5.keys.size(); i++)
{
    // was machen mit baum5.keys[i]
}



3. Mir ist nicht ganz klar, was du machen willst. Willst du
* jeden zweiten Schlüssel entfernen (keys[1], keys[3], keys[5] usw.) oder
* die Schlüssel mit ungeraden Werten entfernen?
Dafür musst du remove aufrufen, wenn keys[i] % 2 != 0 ist.

Aber aufpassen: Durch die Remove-Aktion rücken alle Elemente, die hinter Platz i stehen, um einen Platz nach vorn. Du musst also nach dem Remove auch i-- machen, um den Index zu korrigieren, sonst überspringst du das Element, was als nächstes folgt.

Dieser Post wurde am 13.12.2011 um 09:11 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.12.2011, 09:28 Uhr
mo.base



Hallo ao, zuesrt vielen Dank für deine Hilfe.

Ja, genau, ich möchte die Schlüssel mit ungeraden Werten entfernen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.12.2011, 10:04 Uhr
0xdeadbeef
Gott
(Operator)


Ich verweise mal auf den Wikipedia-Artikel zum erase-remove-Idiom, in dem genau das als Beispiel benutzt wird.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.12.2011, 18:33 Uhr
~TIRI
Gast


#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>

....
bool even(int value) {
return (value % 2 == 0);
}
bool odd(int value){
return (value % 2 != 0);
}
.....
vector<int> mVector;
vector<int>::iterator vIterator;
mVector.push_back(1);
mVector.push_back(2);
mVector.push_back(3);
mVector.push_back(4);

vIterator = remove_if(mVector.begin(), mVector.end(), even);
mVector.erase(vIterator,mVector.end());
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: