Opérations sur les tableaux ???

cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 - 29 nov. 2009 à 22:57
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 30 nov. 2009 à 17:06
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
29 nov. 2009 à 23:38
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++.
0
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
30 nov. 2009 à 16:51
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.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
30 nov. 2009 à 17:06
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;
}
0
Rejoignez-nous