Opérations sur les tableaux ???

Signaler
Messages postés
176
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
1 avril 2013
-
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
-
bonsoir
je n'ai jamais programmé en C++, mais un internaute m'avait fait une dll permettant de faire varier un tableau de valeur en le multipliant par un coefficient.
donc ce que je me demande c'est est ce que en c++ on peut faire des opérations sur un tableau entier en une opération exemple ajouter +5 à tous les éléments du tableau sans être obligé de passer en revue tous les éléments et ajouter à chaque 5. ou alors est il possible d'ajouter deux tableau exemple élementtablo1+élémenttablo2 dans un troisième tablo mais toujours en une opération sans effectuer cette opération dans une boucle.
est ce possible ? avant de me mettre à essayer d'étudier le C++
merci

3 réponses

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
on peut faire des opérations sur un tableau entier en une opération exemple ajouter +5 à tous les éléments du tableau sans être obligé de passer en revue tous les éléments et ajouter à chaque 5.

Ce que tu demandes est impossible. Si tu veux mettre à jour tous les éléments d'un tableau, tu dois tous les passer en revue.
En revanche, certains parcours sont déjà faits. Dans les classes 'algorithm' de C++, il existe des manipulateurs qui permettent d'effectuer une action choisie, sur tous les éléments d'un tableau quelconque.

est il possible d'ajouter deux tableau exemple élementtablo1+élémenttablo2 dans un troisième tablo mais toujours en une opération sans effectuer cette opération dans une boucle.

Oui et non. Tout comme le C, tu ne peux pas.
Maintenant, si tu crées ta propre classe tableau, oui. Ou alors tu utilises les manipulateurs du C++ (toujours dans 'algorithm').
Le C++ fournit des conteneurs déjà fait (list, vector, map, set, pair, ...) avec lesquels on peux faire pas mal de chose sans avoir à les recoder (intersection de deux tableaux, tri, etc ...).

est ce possible ? avant de me mettre à essayer d'étudier le C++

En C++, tout est possible. Si tu as besoin de quelque chose, créez le, ou regarde si ça n'existe pas déjà.

Jette un coup d'oeil sur cppreference.com, tu auras un aperçu des conteneurs du C++.
Messages postés
176
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
1 avril 2013
1
merci pour cette réponse
c'est bien ce que je pensais!
je pense que tout de même que des opérations sur des grands tableau sont beaucoup plus rapide en C++ qu'en VB.
j'ai regardé la page sur les références mais j'avoue n'avoir pas saisi. je vais essayé de faire quelques petits prog sur les opérations de tableau en C++ et je verrais ensuite
encore merci.
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Un exemple de ce dont tu as parlé, avec et sans transformation.
(En mode à l'ancienne comme en C, ou en mode avec la STL).

#include 
#include 
#include <vector>

float add5(float f)
{
  return f + 5.0;
}

float display(float f)
{
  std::cout << f << std::endl;
  return f;
}

int main(void)
{
  float values[] = {0.1, 0.2, 0.3, 0.4};
  std::vector<float> tab(values, values + 4);

  // A l'ancienne
  for (unsigned int i = 0; i < tab.size(); ++i)
    std::cout << tab[i] << std::endl;
  for (unsigned int i = 0; i < tab.size(); ++i)
    tab[i] += 5;
  for (unsigned int i = 0; i < tab.size(); ++i)
    std::cout << tab[i] << std::endl;

  std::cout << std::endl;

  // Avec transfo
  std::transform(tab.begin(), tab.end(), tab.begin(), display);
  std::transform(tab.begin(), tab.end(), tab.begin(), add5);
  std::transform(tab.begin(), tab.end(), tab.begin(), display);

  return 0;
}