Generalized numerische Algorithmen. STL (Teil 14)

Bewerten Sie diesen Artikel




Generalized numerische Algorithmen STL c ++Die nächste, sehr notwendig und sehr mächtige Gruppe алгоритмов STL numerische Algorithmen verallgemeinert (Kopfzeile <numerisch>). Das ist nicht irgendeine Art von speziellen Berechnungsmethoden, wie man denken könnte auf den Namen basierend. Es Algorithmen, erlauben die bekannte Bibliothek oder ihre eigenen Computeraktivitäten auf die Gesamtheit der Container-Elemente zu verwenden,. Und weil so, dann sind sie wie alle anderen Algorithmen STL genannt. Algorithmen sind generali, hauptsächlich in mathematischen Berechnungen in Bezug auf die Behälter, enthält numerische Elemente. Aber dies muss nicht unbedingt. Und wenn Sie nicht daran interessiert sind in der numerischen Berechnung (beispielsweise aus dem Bereich der digitalen Signalverarbeitung), dann können Sie nur sicher, diesen Teil der Präsentation überspringen…

STL Liste dargestellt verallgemeinert numerische Algorithmen: Jota (die Schaffung einer monoton wachsende Folge), akkumulieren (Akkumulation), Innenprodukt (skalyarnoe proïzvedenïe), partial_sum (Teilsumme), adjacent_difference (benachbarte Differenz).

Illustration funktioniert am besten zu halten, um den verwendeten und intuitive Algorithmus akkumulieren. Dieser Algorithmus verringert (reduziert die Dimension) Behälter mit den Akkumulationswerte. Insbesondere, für die einfache Zahlenwerte, wendet er sich Vektor<> oder Liste<> auf einen einzelnen skalaren Ergebniswert.

Algorithmus akkumulieren (wie, jedoch, die meisten anderen) Es hat 2 syntaktischen Formen:

In der ersten Form (es ist weniger interessant) Algorithmus fasst die der Wert der Containerelemente. Sie nicht zur gleichen Zeit vergessen, so dass Schnur, beispielsweise, Betrieb ‘+‘ Es bedeutet Verkettung, Kleben). In der zweiten Form sammelt der Algorithmus das Ergebnis einer binären Operation (Funktion von 2 Variablen), verwendet Wert zu akkumulieren (Batterie) und der Reihe nach mit jedem der Behälterelement.

Unverständlich? Diese leistungsfähige Technik, und jetzt wird alles aus dem Beispiel klar sein,…

In mathematischen Statistik sind verschiedene Arten von Mittelwerten für die Zahlenfolge verwendet,:

  • Arithmetische Mittel:

    SA1

  • geometrisches Mittel:

    SG2

  • harmonische Mittel:

    SR3

  • Die mittlere quadratische:

    SQ4

Wir werden nicht in die Bedeutung der einzelnen Optionen vertiefen. Wir machen eine Anwendung, die berechnet den Mittelwert und einige weitere Merkmale (Dispersion, Standardabweichung) die Eingabe einer Zahlenfolge. Der Eingangs seriellen Eingang oder ein Terminal, oder Umleitung von vorgefertigten Datendatei:

Es ist leicht zu sehen,, jeder von komplexen mathematischen Formeln oben geschrieben wird nur berechnet, auf einer Linie, mit der Technik der verallgemeinerten Algorithmen:

Generalized numerische Algorithmen in stl c ++

Hier können wir die bekannte Beziehung sehen, die bestätigt die Richtigkeit unserer Berechnungen. Es besteht in der Tatsache, dass für jede Folge von Zahlen arithmetische Mittelwert größer oder gleich dem geometrischen Mittel, die, wiederum, größer als oder gleich dem harmonischen Mittelwert. Und Gleichheit in diesen Aussagen können nur dann, wenn alle Mitglieder einer Folge von Zahlen erreicht werden, gleich sind:

Generalized numerische Algorithmen in stl c ++

Wir kehren zur Untersuchung des Codes. Der erste Aufruf des Algorithmus akkumulieren( b, e, 0. ) Es zeigt die erste Form der Nutzung: Behälter Werte werden auf den Anfangswert 0.0.

Warnung!: Die Bilanz weist auf die konstante Anfangswert, anzeigt,, Was ist das real Wert - im Grunde wichtig. Ohne diesen Code kompiliert auch ohne Warnungen, aber mit völlig falsch gemacht und extrem schwierig, unter Interpretationsergebnisse! Dies ist, Algorithmen, die definiert sind als Vorlage, und der Typ des dritten Parameters bestimmt, die Anhäufung von internen Operationen werden für jede Art von Daten verwendet werden,.

der Rest (4 Stücke) Herausforderungen akkumulieren() verwenden, um die zweite Form von Call – 4. Sendeparameter Funktion Akkumulation. Wie aus den Beispielen ersichtlich, Es nimmt die aktuellen Parameter des akkumulierten Wert und das nächste Element in dem Behälter. Und gibt den Akkumulationsvorgang. Aus Gründen der Übersichtlichkeit, Akkumulieren alle Funktionen sind in dem Beispiel einer einfachen und klaren Form geschrieben. praktisch, zu vermeiden, die Abhängigkeit von der Art der verarbeiteten Daten, sie sind auch in der Regel geschrieben, als Template-Funktion. Dann könnte es so aussehen:

schließlich, beachten Sie, wenn bis jetzt nicht bemerkt, dass die Akkumulation von Beträge wir verwenden den Anfangswert 0 (3-Erste Option akkumulieren() ), und die Anhäufung von Werk, natürlich, 1, mit dem entsprechenden Datentyp.

Newsletter neue Lektionen über die Programmierung:

Öl

Etwa Öl

praktische Erfahrungen über die Softwareentwicklung 40 Jahre. Lehrer Globale Logik internationales Softwareunternehmen. IBM Developer Works Permanent Autor von Publikationen. Wissenschaftliche Herausgeber der Computerliteratur-Verlag "Symbol-Plus", Sankt Petersburg.

2 Gedanken zu "Generalized numerische Algorithmen. STL (Teil 14)

  1. Всем привет!
    Сегодня заглянул на онлайн сайты, где раньше смотрел, удивленно нашел что они не работают, то есть их фильмы не транслируют вообще, типо в вашей стране видео запрещенно!
    Теперь фильмы не глянуть онлайн по всюду фильмы удалены, что опять назад на торренты?

Hinterlasse eine Antwort

Platz Code in Tags: <pre class="lang:c ++ dekodieren:true ">DEIN CODE</Vor>