Exercice 0.
Ajouter une fonction virtuelle pure dans la classe Element:
class Element {
public:
...
virtual int reqNbSommet() const = 0;
...
};
Essayer de recompiler votre code.
Maintenant, écrire la méthode reqNbSommet() pour
un Element1D.
Exercice 1.
Dans un main, déclarer un pointeur vers un Element (Element*). Ensuite, instancier un objet de type Element1D. Faire porter la valeur de l'adresse de votre nouvel Element1D par votre pointeur:
lPtrElement = &lElement1D;
Faire un appel de fonction (reqNbSommet()) sur votre pointeur:
cout << lPtrElement->reqNbSommet() << endl;
Exercice 2.
Écrire une nouvelle classe qui se nommera ElementTriangle
et qui héritera publiquement de la classe Element. Ajouter
les attributs nécessaires et implanter correctement la méthode
reqNbSommet()
et imprimeElement().
Exercice 3.
Reprendre l'exercice 1, mais instancier en plus un ElementTriangle.
Faire pointer le pointeur successivement vers l'Element1D puis
l'ElementTriangle et à chaque fois faire l'appel de la
méthode reqNbNoeud(). Suivre la trace de l'exécution
dans le débogueur.
Exercice 4.
Écrire le petit programme suivant et l'exécuter.
#include <vector>
template <class PTType>
void imprimeInfo(const vector<PTType>& pVect)
{
cout << "Size: " << pVect.size()
<< " Capacity: " << pVect.capacity()
<< " &pVect[0]: " << &pVect[0] << endl;
}
int main()
{
vector<double> lVect(3);
imprimeInfo(lVect);
lVect.push_back(10.0);
imprimeInfo(lVect);
lVect.pop_back();
imprimeInfo(lVect);
lVect.reserve(100);
imprimeInfo(lVect);
lVect.resize(10);
imprimeInfo(lVect);
}
Exercice 5.
Parcourir toutes les entrées d'un vector et les afficher.
Utiliser les itérateurs pour ce faire. Aussi, faire un typedef
sur le type de vecteur choisi et utiliser uniquement ce typedef
pour aller chercher toutes les définitions nécessaires.
Exercice 6.
Remplacer votre vector de l'exemple précédent
par une list. Si tout est bien fait, vous n'avez qu'à changer
votre typedef. Recompiler.
Exercice 7.
Écrire votre conteneur à l'écran. Utiliser un ostream_iterator et la fonction copy:
ostream_iterator<double> lOutput(cout, " ");
copy (lVect.begin(), lVect.end(), lOutput);