Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  Vectorinhalt mit Eingabe verlgeichen  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
Beitrag SeppJ Moderator 19:36:49 24.04.2012   Titel:              Zitieren

314159265358979 schrieb:
C++:
typename std::iterator_traits<ForwardIterator>::value_type

Quark, mal wieder, leider. Hmm, so ganz begeistert bin ich noch nicht. Das deckt zwar Pointer ab (und hätte auch gleich im ersten Beispiel benutzt werden können, da C++98), aber gegen schlampig geschriebene Iteratoren ohne Traits schützt es noch nicht. Aber akzeptabel, da ich Schlamperei nicht unterstütze.

edit: Ich sollte mal dein Greasemokeyskript so langsam abschalten :) .

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List


Zuletzt bearbeitet von SeppJ am 19:37:32 24.04.2012, insgesamt 1-mal bearbeitet
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 19:45:01 24.04.2012   Titel:              Zitieren

Du könntest du Rückgabetyp evtl noch einfacher schreiben als:
C++:
-> decltype(std::make_tuple(*last, *last))


Zuletzt bearbeitet von 314159265358979 am 19:49:11 24.04.2012, insgesamt 1-mal bearbeitet
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
Beitrag SeppJ Moderator 19:50:59 24.04.2012   Titel:              Zitieren

314159265358979 schrieb:
Du könntest du Rückgabetyp evtl noch einfacher schreiben als:
C++:
-> decltype(std::make_pair(*last, *last))
Ahh, nun kommen wir zu Konstrukten, die gefallen. :leak:

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
H4rdstyl3
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.04.2011
Beiträge: 19
Beitrag H4rdstyl3 Mitglied 22:18:47 24.04.2012   Titel:              Zitieren

Blöderweise wurde mein Porblem noch immer nicht gelöst...
hab mir jez was anders gedacht habe aber noch immer das Problem dass ich nicht weiß wie ich die kleinste bzw größte zahl rausbekomm.....gibts da für Vector Container vll ne Memberfunktion oder so was?!

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<string>
#include<vector>
 
using namespace std;
int main(){
    double zahl=0;
    double min;
    double max=0;
    char schleifenbeender=' ';
    vector<double> werte;
    while(cin>>zahl && schleifenbeender!='b'){
                    werte.push_back(zahl);
                   
    }
   
    for(int i=0;i<werte.size();i++){
            cout << werte[i]<<endl;
// wie krieg ich den Vektor dazu mir die gew. Werte auszugeben?!
 
}
system("Pause");
return 0;
}
Incocnito
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.09.2010
Beiträge: 419
Beitrag Incocnito Mitglied 23:08:53 24.04.2012   Titel:              Zitieren

Wurde doch bereits in der ersten Antwort gesagt.

Du willst also in einem vector<int> nach dem goessten Element suchen.

Im Idealfall soll das in der main so verwendet werden:

C++:
int groesste_zahl = groesstes_element(meinVector);


Die Funktion brauchste nur noch schnell schreiben:

C++:
int groesstes_element(const std::vector<int>& zahlen);


Der Parameter ist const, weil du ihn nicht verändern willst.

Du willst also den groessten Wert haben. Dann mach dir schonmal ne Variable dafür.

C++:
int groesste_zahl = 0;


Muss mit 0 gemacht werde, denn wenn ein leeres Array übergeben wird sollte die kleinste Zahl am besten 0 und nicht Müll sein.

Jetzt gehst du einfach von Anfang bis Ende des Arrays durch.
Dafür eignet sich natürlich wie immer prima ne for-Schleife:

C++:
for(unsigned i = 0; i < zahlens.size(); ++i)


Nun kannst du mithilfe einer einfachen if-Abfrage gucken, ob das jeweilige Element, also zahlen[i] groesser ist als groesste_zahl. Wenn ja, dann weißt du zahlen[i] groesste_zahl einfach zu.

Irgendwann biste dann durch damit. Jetzt brauchste nur noch den Wert durch ne return-Anweisung zurückgeben.
Die Funktion kann dann ganz einfach mit

int groesstes = groesstes_element(meinVector);

in der main-Funktion verwendet werden.

Wenn Du das jetzt immer noch nicht hinkriegst, kann ich dir auch nicht mehr helfen.

_________________
„Solche sechs wie uns fünf gibt's keine vier, denn wir drei sind die zwei einzigen.“ - Graf Zahl
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
Beitrag SeppJ Moderator 00:35:12 25.04.2012   Titel:              Zitieren

Incocnito schrieb:

Muss mit 0 gemacht werde, denn wenn ein leeres Array übergeben wird sollte die kleinste Zahl am besten 0 und nicht Müll sein.
Wieso?

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
unskilled
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2007
Beiträge: 3776
Beitrag unskilled Mitglied 01:33:48 25.04.2012   Titel:              Zitieren

SeppJ schrieb:
Incocnito schrieb:

Muss mit 0 gemacht werde, denn wenn ein leeres Array übergeben wird sollte die kleinste Zahl am besten 0 und nicht Müll sein.
Wieso?

entweder. du nimmst das erste element oder nimmst als max numeric_limits<T>::min und als min dann numeric_limits<T>::max. aber 0 ist bissl doof.

bb

_________________
Keiner kann besser nix als ich - Tagedieb mit Lächeln im Gesicht :o)
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
Beitrag SeppJ Moderator 12:25:42 25.04.2012   Titel:              Zitieren

Also wenn die Menge leer ist, dann würde ich auf einen undefinierten/default konstruierten Rückgabewert pochen. Alles andere wäre eine Lüge, die Fehler vertuscht.

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List


Zuletzt bearbeitet von SeppJ am 12:26:19 25.04.2012, insgesamt 1-mal bearbeitet
Incocnito
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.09.2010
Beiträge: 419
Beitrag Incocnito Mitglied 15:59:21 25.04.2012   Titel:              Zitieren

Wäre eine Exception oder eine Assertion nicht irgendwie besser?
Wenn man std::min_element() bei nem leeren vector dereferenziert, kackt das Programm ja logischerweise auch ab.

_________________
„Solche sechs wie uns fünf gibt's keine vier, denn wir drei sind die zwei einzigen.“ - Graf Zahl
pyhax
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.11.2011
Beiträge: 692
Beitrag pyhax Mitglied 16:30:35 25.04.2012   Titel:              Zitieren

So stehts beim GCC in der Headerdatei:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  /**
   *  @brief  Return the minimum element in a range.
   *  @ingroup sorting_algorithms
   *  @param  __first  Start of range.
   *  @param  __last   End of range.
   *  @return  Iterator referencing the first instance of the smallest value.
  */

  template<typename _ForwardIterator>
    _ForwardIterator
    min_element(_ForwardIterator __first, _ForwardIterator __last)
    {
      // concept requirements
      __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
      __glibcxx_function_requires(_LessThanComparableConcept<
        typename iterator_traits<_ForwardIterator>::value_type>)
      __glibcxx_requires_valid_range(__first, __last);
 
      if (__first == __last)
    return __first;
      _ForwardIterator __result = __first;
      while (++__first != __last)
    if (*__first < *__result)
      __result = __first;
      return __result;
    }

_________________
Ich kann (teilweise): C++, Python, Java(ist lange her), PHP, D (Anfänger)
c++.de :: C++ (auch C++0x und C++11) ::  Vectorinhalt mit Eingabe verlgeichen  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.