| Autor |
Nachricht |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
|
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
|
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
|
SeppJ Moderator
19:50:59 24.04.2012 Titel: |
|
Zitieren |
|
 |
H4rdstyl3
Mitglied
Benutzerprofil
Anmeldungsdatum: 27.04.2011
Beiträge: 19
|
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
|
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
|
SeppJ Moderator
00:35:12 25.04.2012 Titel: |
|
Zitieren |
|
 |
unskilled
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.07.2007
Beiträge: 3776
|
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
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17930
|
SeppJ Moderator
12:25:42 25.04.2012 Titel: |
|
Zitieren |
|
 |
Incocnito
Mitglied
Benutzerprofil
Anmeldungsdatum: 02.09.2010
Beiträge: 419
|
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
|
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)
|
|
 |