User Tools

Site Tools


in204:tds:sujets:td4:part1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
in204:tds:sujets:td4:part1 [2019/10/15 13:32]
bmonsuez [Question n°1.2]
in204:tds:sujets:td4:part1 [2022/11/18 10:49] (current)
Line 90: Line 90:
 </​code>​ </​code>​
 <hidden Explication & correction>​ <hidden Explication & correction>​
 +
  
 <code cpp> <code cpp>
Line 215: Line 216:
  
 </​code>​ </​code>​
- 
-</​hidden>​ 
  
 Quand on appelle la fonction ''​distance'',​ elle appelle la fonction distance qui prend trois arguments, le dernier étant un objet ayant un type identifiant le type d'​itérateur. Deux fonctions ''​distances''​ internes (ie. dans un espace de nom anoyme) sont définies: ​ Quand on appelle la fonction ''​distance'',​ elle appelle la fonction distance qui prend trois arguments, le dernier étant un objet ayant un type identifiant le type d'​itérateur. Deux fonctions ''​distances''​ internes (ie. dans un espace de nom anoyme) sont définies: ​
Line 223: Line 222:
     typename std::​iterator_traits<​inputIterator>::​difference_type     typename std::​iterator_traits<​inputIterator>::​difference_type
         distance(inputIterator first, inputIterator last, iteratorTag)         distance(inputIterator first, inputIterator last, iteratorTag)
-</​code>​\\ Cette fonction est la fonction générique qui fonctionne pour l'​intégralité des différents type d'​itérateurs ''​iteratorTag''​.+</​code>​Cette fonction est la fonction générique qui fonctionne pour l'​intégralité des différents type d'​itérateurs ''​iteratorTag''​.
   * <code cpp>   * <code cpp>
     template<​class inputIterator>​     template<​class inputIterator>​
     typename std::​iterator_traits<​inputIterator>::​difference_type     typename std::​iterator_traits<​inputIterator>::​difference_type
         distance(inputIterator first, inputIterator last, std::​random_access_iterator_tag)         distance(inputIterator first, inputIterator last, std::​random_access_iterator_tag)
-</​code>​\\ Cette fonction est la version spécialisée pour le type ''​iteratorTag''​ qui doit être égal à [[https://​en.cppreference.com/​w/​cpp/​iterator/​iterator_tags|std::​random_access_iterator_tag]].+</​code>​Cette fonction est la version spécialisée pour le type ''​iteratorTag''​ qui doit être égal à [[https://​en.cppreference.com/​w/​cpp/​iterator/​iterator_tags|std::​random_access_iterator_tag]].
    
 Comme la version spécialisée est prioritaire sur la version générique,​ si l'​itérateur définit ''​iterator_category''​ comme étant [[https://​en.cppreference.com/​w/​cpp/​iterator/​iterator_tags|std::​random_access_iterator_tag]],​ c'est la version spécialisée de la fonction qui sera appelé, sinon la version générique,​ ce qui permet d'​avoir recours à la méthode optimale pour calculer la distance. Comme la version spécialisée est prioritaire sur la version générique,​ si l'​itérateur définit ''​iterator_category''​ comme étant [[https://​en.cppreference.com/​w/​cpp/​iterator/​iterator_tags|std::​random_access_iterator_tag]],​ c'est la version spécialisée de la fonction qui sera appelé, sinon la version générique,​ ce qui permet d'​avoir recours à la méthode optimale pour calculer la distance.
 +
 +</​hidden>​
  
 ===== Question n°2 ===== ===== Question n°2 =====
Line 288: Line 289:
 using namespace std; using namespace std;
  
-int testSortAndUpper()+void testSortAndUpper()
 { {
 +    std::​vector<​int>​ v{ 10, 20, 30, 30, 20, 10, 10, 20 };
     // Appel de la fonction "​upper'​ sur le vecteur en commençant par le premier élément ​     // Appel de la fonction "​upper'​ sur le vecteur en commençant par le premier élément ​
     // et en terminant avec le dernier.     // et en terminant avec le dernier.
Line 305: Line 307:
  
  
-int testSortHeapAndUpper()+void testSortHeapAndUpper()
 { {
 +    std::​vector<​int>​ v{ 10, 20, 30, 30, 20, 10, 10, 20 };
 +    std::​make_heap(v.begin(),​ v.end());
     // Appel de la fonction "​upper'​ sur le vecteur en commençant par le premier élément ​     // Appel de la fonction "​upper'​ sur le vecteur en commençant par le premier élément ​
     // et en terminant avec le dernier.     // et en terminant avec le dernier.
in204/tds/sujets/td4/part1.1571146362.txt.gz · Last modified: 2019/10/15 13:32 by bmonsuez