Quels sont les avantages et les inconvénients de l’utilisation de std :: stack au lieu de simplement deque, vector ou list

J’écris un très simple std :: stack en utilisant le vecteur comme conteneur sous-jacent. J’ai réalisé que je pouvais remplacer toutes les fonctions push (), pop () et top () par push_back (), pop_back () et back () du conteneur de vecteur.

Mes questions sont les suivantes: pourquoi utiliser un adaptateur de conteneur lorsque l’utilisation contrôlée du conteneur sous-jacent suffit? Pourquoi ne pas utiliser uniquement un deque, un vecteur ou une liste? Il y aura une perte de mémoire ou de temps de traitement?

Lorsque votre code dit std::stack , le lecteur sait clairement quelles opérations il a besoin sur le conteneur … il communique et documente tout en garantissant qu’aucune autre opération n’est utilisée. Cela peut les aider à se faire rapidement une idée de la logique algorithmique de votre code. Il est alors facile de remplacer d’autres implémentations qui respectent la même interface.

C’est un peu comme si on utilisait std::ifstream au lieu de std::fstream – on peut lire et écrire avec std::fstream , mais quiconque lira votre code devra prendre en compte le plus grand nombre d’utilisations possibles du stream avant de réaliser utilisé pour la lecture; vous gaspilleriez leur effort mental.