algorithmes numériques Généralisées. STL (partie 14)




Generalized algorithmes numériques STL c ++la prochaine, groupe très nécessaire et très puissant алгоритмов STL sont généralisées algorithmes numériques (tête <numérique>). Ce n'est pas une sorte de méthodes de calcul spéciales, que l'on pourrait penser en fonction du nom. Il algorithmes, permettre d'utiliser la bibliothèque bien connue ou de leurs propres activités informatiques à la totalité des éléments de conteneur. Et parce que, puis ils sont appelés comme tous les autres algorithmes STL. Les algorithmes utilisés sont généralisés, essentiellement dans des calculs mathématiques par rapport aux contenants, contient des éléments numériques. Mais cela ne signifie pas nécessairement. Et si vous n'êtes pas intéressé par le calcul numérique (par exemple à partir du domaine du traitement numérique du signal), alors vous pouvez juste sauter en toute sécurité cette partie de la présentation…

la liste STL présenté généralisée des algorithmes numériques: iota (la création d'une séquence augmentant de façon monotone), accumuler (accumulation), inner_product (skalyarnoe proïzvedenïe), partial_sum (somme partielle), adjacent_difference (différence adjacente).

Illustration fonctionne mieux pour tenir à l'algorithme utilisé et intuitive accumuler. Cet algorithme réduit (réduit la dimension) Récipient avec les valeurs d'accumulation. notamment, pour les valeurs numériques simples, il se tourne vecteur<> ou liste<> à une seule valeur de résultat scalaire.

algorithme accumuler (comment, cependant, la plupart des autres) elle a 2 formes syntaxiques:

Dans la 1ère forme (elle est moins intéressante) algorithme résume le la valeur des éléments de conteneur. Ne pas oublier en même temps, de telle sorte que chaîne, par exemple, opération ‘+‘ Cela signifie concaténation, collage). Dans la deuxième forme de l'algorithme recueille le résultat d'une opération binaire (fonction de 2 variables), utilisé pour accumuler la valeur (batterie) et à son tour à chacun des éléments de récipient.

On ne sait pas? Cette technique puissante, et maintenant tout sera clair à partir de l'exemple…

Dans les statistiques mathématiques sont utilisées plusieurs types de valeurs moyennes pour la séquence numérique:

  • moyenne arithmétique:

    SA1

  • moyenne géométrique:

    SG2

  • moyenne harmonique:

    SR3

  • La moyenne quadratique:

    SQ4

Nous ne rentrerons pas dans le sens de chaque option. Nous allons faire une demande, qui calcule la moyenne et quelques autres caractéristiques (dispersion, écart-type) à l'entrée une séquence numérique. L'entrée série d'entrée ou un terminal, ou la redirection de fichier de données pré-préparés:

Il est facile de voir, chaque formules mathématiques de complexes écrites ci-dessus est calculé uniquement sur une seule ligne, en utilisant la technique d'algorithmes généralisés:

algorithmes numériques Généralisées dans stl c ++

Ici, nous pouvons voir la relation bien connue, ce qui confirme la justesse de nos calculs. Il consiste dans le fait, que, pour toute suite de nombres moyenne arithmétique est supérieure ou égale à la moyenne géométrique, qui, à son tour, supérieure ou égale à la moyenne harmonique. Et l'égalité dans ces états ne peut être atteint que si tous les membres d'une séquence de nombres sont égaux:

algorithmes numériques Généralisées dans stl c ++

Nous reviendrons à l'étude du code. Le premier appel de l'algorithme accumuler( b, e, 0. ) Il montre la 1ère forme d'utilisation: Les valeurs du conteneur sont ajoutées à la valeur initiale 0.0.

avertissement!: points d'enregistrement à la valeur initiale constante, indiquant, il réel valeur - fondamentalement important. Sans ce code compilera même sans avertissements, mais fait avec complètement incorrect et extrêmement difficile dans les résultats d'interprétation! voici, les algorithmes qui sont définis comme modèle, et le type de troisième paramètre détermine l'accumulation des opérations internes sera utilisé pour tout type de données.

tout le reste (4 pièces) défis accumuler() utiliser la 2ème forme d'appel – Quatrième paramètre d'émission fonction accumulation. Comme on le voit d'après les exemples, il prend les paramètres actuels de la valeur accumulée et de l'élément suivant dans le conteneur. Et retourne l'opération accumulant. Pour plus de clarté,, accumuler toutes les fonctions sont écrites dans l'exemple d'une forme simple et claire. en pratique, pour éviter la dépendance du type de données traitées, ils sont aussi généralement écrites, en fonction du modèle. Ensuite, il pourrait ressembler à ceci:

enfin, note, si pas remarqué jusqu'à présent, que l'accumulation de montants nous utilisons la valeur initiale 0 (3-Première option accumuler() ), et l'accumulation de œuvres, naturellement, 1, avec le type de données correspondant.

Bulletin de nouvelles leçons sur la programmation:

date
page
algorithmes STL numériques Généralisées. partie 14
évaluation
5
huile

Sur huile

une expérience pratique sur le développement de logiciels 40 ans. société de logiciels internationale Global Teacher Logic. IBM Developer Works auteur permanent des publications. éditeur scientifique de l'ordinateur littérature maison d'édition "Symbole-Plus", Saint-Pétersbourg.

2 réflexions sur "algorithmes numériques Généralisées. STL (partie 14)

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

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>