Maison > Questions et réponses > le corps du texte
问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赋值?
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 2ostream_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;
PHP中文网2017-04-18 10:49:50
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
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