Maison  >  Questions et réponses  >  le corps du texte

java - C++ STL迭代器声明的iterator和reverse_iterator实质区别?是不同数值吗?

问1:Vector<int>::reverse_iterator r1和Vector<int>::iterator r2。
r1和r2作用是截然不同的,这个:reverse_iterator和iterator实质是不同数值吗,为什么会有这个作用?

问2:ostream_iterator<int,char>out_iter(cout," ");括号(cout," ")是什么意思,这是个构造函数?为什么cout能给int赋值?

PHP中文网PHP中文网2763 Il y a quelques jours799

répondre à tous(2)je répondrai

  • PHPz

    PHPz2017-04-18 10:49:50

    Question 1
    reverse_iterator et iterator sont deux types d'itérateurs définis dans le modèle de classe vectorielle. L'implémentation peut être de différentes classes, telles que :

    
    template </* ... */>
    class vector {
     public:
      class ReverseIterator {...};
      class Iterator {...};
    
      using reverse_iterator = ReverseIterator;
      using iterator = Iterator;
    };
    
    Le sens d'itération de

    reverse_iterator est opposé à celui de iterator. Autrement dit, si r1 et r2 pointent vers le même élément, r1+1 et r2-1 pointent vers le même élément (s'ils sont valides, et ils surchargent respectivement operator+ et operator-).

    La direction opposée de l'itération est obtenue grâce à différentes implémentations d'opérateurs. Si l'itérateur est implémenté en interne par un pointeur, l'implémentation operator++ de reverse_iterator peut décrémenter le pointeur, et l'implémentation operator++ de l'itérateur peut incrémenter le pointeur.

    Question 2
    ostream_iterator<int, char> out_iter(cout, " "); déclare et définit une variable, et initialise directement la variable. (cout, " ") est la liste réelle des paramètres. Le compilateur essaiera de choisir un constructeur basé sur cette liste de paramètres et de « transmettre » ces paramètres au constructeur.

    Selon la norme, cout ne peut pas attribuer de valeur à int. Veuillez fournir le code correspondant. Mais cout peut être converti en type bool (après c++11) ou void * (avant c++11). En effet, le type de cout hérite d'une instance de basic_ios et le modèle de classe basic_ios utilisé pour instancier l'instance définit l'opérateur de conversion approprié. Autrement dit, bool x = std::cout;

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:49:50

    1. Que sont deux valeurs numériques ? . reverse_iterator et iterator sont des itérateurs, essentiellement deux modèles de classe
      réalisent des fonctions différentes en réimplémentant différents détails de la fonction à l'intérieur de la classe, mais l'interface externe est la même

    2. instancie un objet out_iter, le type est ostream_iterator<int,char> et les paramètres passés dans le constructeur sont cout et " "

    Le sens de la phrase "cout peut attribuer une valeur à int" n'est pas clair

    répondre
    0
  • Annulerrépondre