Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

iterator = NULL

58 réponses
Avatar
Henri de Solages
Bonjour.

Est-il légal d'assigner la valeur NULL à un itérateur ?

--
Get rid of the final underscore of my address to use it.

10 réponses

1 2 3 4 5
Avatar
Gabriel Dos Reis
Henri de Solages writes:

| Bonjour.
|
| Est-il légal d'assigner la valeur NULL à un itérateur ?

NULL est censé désigner une constante de pointeur nul et un itérateur
n'est pas un pointeur.

Quel problème voudrais-tu résoudre ?

-- Gaby
Avatar
Loïc Joly
Bonjour.

Est-il légal d'assigner la valeur NULL à un itérateur ?


Souvent, l'équivalent moral de NULL pour un itérateur sur une collection
"c" est c.end()

--
Loïc

Avatar
Henri de Solages
Henri de Solages writes:
| Est-il légal d'assigner la valeur NULL à un itérateur ?

NULL est censé désigner une constante de pointeur nul et un itérateur
n'est pas un pointeur.

Quel problème voudrais-tu résoudre ?


Je veux un tableau d'itérateurs sur des éléments d'une list.
Pour parcourir mes tableaux de pointeurs facilement, je les termine par un pointeur NULL.
Y a-t-il un équivalent pour les itérateurs ?
Je remarque cependant que ni c++ ni icpc (compilateur d'Intel) ne me jettent quand
j'affecte NULL à un itérateur.

Avatar
Gabriel Dos Reis
Henri de Solages writes:

| > Henri de Solages writes:
| > | Est-il légal d'assigner la valeur NULL à un itérateur ?
| > NULL est censé désigner une constante de pointeur nul et un
| > itérateur
| > n'est pas un pointeur.
| > Quel problème voudrais-tu résoudre ?
|
| Je veux un tableau d'itérateurs sur des éléments d'une list.
| Pour parcourir mes tableaux de pointeurs facilement, je les termine
| par un pointeur NULL. Y a-t-il un équivalent pour les itérateurs ?

Si tu as un tableau, pourquoi voudrais-tu le terminer par par NULL ?
Connaître la taille du tableau ne suffit pas pour savoir quand
s'arrêter ?

typedef list<T>::iterator list_iterator;
vector<list_iterator> v;

| Je remarque cependant que ni c++ ni icpc (compilateur d'Intel) ne
| me jettent quand j'affecte NULL à un itérateur.

Essaie g++ :-)

-- Gaby
Avatar
Gabriel Dos Reis
Loïc Joly writes:

| > Bonjour.
| > Est-il légal d'assigner la valeur NULL à un itérateur ?
|
| Souvent, l'équivalent moral de NULL pour un itérateur sur une
| collection "c" est c.end()

Cela peut cependant réserver des surprises.

list<int> l;
// ...
copy(l.begin(), l.end(), back_inserter(l));

-- Gaby
Avatar
Cyrille

Henri de Solages writes:
| Est-il légal d'assigner la valeur NULL à un itérateur ?

NULL est censé désigner une constante de pointeur nul et un itérateur
n'est pas un pointeur.

Quel problème voudrais-tu résoudre ?



Je veux un tableau d'itérateurs sur des éléments d'une list.
Pour parcourir mes tableaux de pointeurs facilement, je les termine par
un pointeur NULL. Y a-t-il un équivalent pour les itérateurs ?
Je remarque cependant que ni c++ ni icpc (compilateur d'Intel) ne me
jettent quand j'affecte NULL à un itérateur.


En général, on utilise std::vector plutôt que des tableaux, en C++.
Plutôt que marquer le dernier par NULL, on parcours simplement le vector
de begin() à end().

Je ne crois pas que ça ait un sens d'affecter NULL à un itérateur.

--
Ceux qui vivent, ce sont ceux qui luttent.


Avatar
Marc Boyer
Henri de Solages a écrit :
Henri de Solages writes:
| Est-il légal d'assigner la valeur NULL à un itérateur ?

NULL est censé désigner une constante de pointeur nul et un itérateur
n'est pas un pointeur.

Quel problème voudrais-tu résoudre ?


Je veux un tableau d'itérateurs sur des éléments d'une list.


Pourquoi pas un vecteur ?

Pour parcourir mes tableaux de pointeurs facilement,
je les termine par un pointeur NULL.


Sauf que ce ne sont pas forcément des pointeurs.
Que des itérateurs de liste soient des pointeurs,
primo, cela me supprend (et j'aimerais voir comment
ils codent ++), secundo, même si cela est, c'est
une implémentation possible, pas
la seule possible.

Sinon, ce dont tu as besoin, c'est d'un délimiteur de
fin, donc le end() de la liste me semble une bonne
valeur interdite.

Y a-t-il un équivalent pour les itérateurs ?
Je remarque cependant que ni c++ ni icpc (compilateur d'Intel) ne me jettent quand
j'affecte NULL à un itérateur.


Amusant: tu as un bout de code.

Marc Boyer
--
À vélo, prendre une rue à contre-sens est moins dangeureux
que prendre un boulevard dans le sens légal. À qui la faute ?


Avatar
Stan
"Henri de Solages" a écrit dans le message de
news:dfmsod$9u3$
| > Henri de Solages writes:
| > | Est-il légal d'assigner la valeur NULL à un itérateur ?
| >
| > NULL est censé désigner une constante de pointeur nul et un itérateur
| > n'est pas un pointeur.
| >
| > Quel problème voudrais-tu résoudre ?
|
| Je veux un tableau d'itérateurs sur des éléments d'une list.
| Pour parcourir mes tableaux de pointeurs facilement, je les termine par un
pointeur NULL.
| Y a-t-il un équivalent pour les itérateurs ?
| Je remarque cependant que ni c++ ni icpc (compilateur d'Intel) ne me
jettent quand
| j'affecte NULL à un itérateur.


Pourquoi ne pas placer ces itérateurs dans un vector ?

--

Stan .
Avatar
Marc Boyer
Gabriel Dos Reis a écrit :
Loïc Joly writes:

| > Bonjour.
| > Est-il légal d'assigner la valeur NULL à un itérateur ?
|
| Souvent, l'équivalent moral de NULL pour un itérateur sur une
| collection "c" est c.end()

Cela peut cependant réserver des surprises.

list<int> l;
// ...
copy(l.begin(), l.end(), back_inserter(l));


C'est marrant comme quoi des reflexes du C peuvent
rester incrusté...
Pour moi, end() dans une liste, c'est fondamentalement
le pointeur NULL de toutes les listes chainées C.
Et à chaque fois, faut que je me raisonne en me disant
"mais non, comment faire end()-1 avec NULL ?".
Mais c'est *le* piège (1) ou je tombe systématiquement.

D'ailleurs, un rapide coup d'oeuil sur le code de
la list de mon g++ me dit que end() retourne un "_M_node",
que begin() retourne un "_M_node->_M_next", et la
définition de _M_node semble perdue deux niveaux d'héritage
au dessus... Pas tout clair pour moi.
Ils font une liste circulaire ?

Marc Boyer
(1) enfin, *un* des pièges
--
À vélo, prendre une rue à contre-sens est moins dangeureux
que prendre un boulevard dans le sens légal. À qui la faute ?

Avatar
korchkidu
Gabriel Dos Reis wrote:
Loïc Joly writes:

| > Bonjour.
| > Est-il légal d'assigner la valeur NULL à un itérateur ?
|
| Souvent, l'équivalent moral de NULL pour un itérateur sur une
| collection "c" est c.end()

Cela peut cependant réserver des surprises.

list<int> l;
// ...
copy(l.begin(), l.end(), back_inserter(l));


JE vois pas le piege la. Tu peux expliquer stp?

K.

1 2 3 4 5