[C++] Insert dans un vector sans iterator
Résolu/Fermé
cedrixi
-
8 août 2007 à 16:28
mamiemando Messages postés 33475 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 janvier 2025 - 9 août 2007 à 20:53
mamiemando Messages postés 33475 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 janvier 2025 - 9 août 2007 à 20:53
Bonjour,
Tout est dans le titre. Peut-on insérer un élément dans un vector de la librairie standard, sans utiliser un iterator comme d'habitude, mais la fonction membre [] (pour sélectionner l'endroit d'insertion voulu)?
Merci d'avance!
c
Tout est dans le titre. Peut-on insérer un élément dans un vector de la librairie standard, sans utiliser un iterator comme d'habitude, mais la fonction membre [] (pour sélectionner l'endroit d'insertion voulu)?
Merci d'avance!
c
A voir également:
- [C++] Insert dans un vector sans iterator
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Insert boot disk and press any key ✓ - Forum Windows
- Accéder à la fonction secondaire "insert" de ma touche "Delete" - Forum PC portable
- Problème touche inser ✓ - Forum Clavier
3 réponses
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
8 août 2007 à 20:18
8 août 2007 à 20:18
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
Pour moi la réponse est non. Tu ne peux pas le implémenter car il entrerait en conflit avec l'opérateur [] usuel. On pourrait imaginer que tu implémentes un autre opérateur ou une fonction insert qui t'arrange plus.
Ceci dit il existe des conteneurs peut être plus adapté pour ce que tu veux faire, par exemple les std::set. Que cherches-tu à faire ?
Bonne chance
Pour moi la réponse est non. Tu ne peux pas le implémenter car il entrerait en conflit avec l'opérateur [] usuel. On pourrait imaginer que tu implémentes un autre opérateur ou une fonction insert qui t'arrange plus.
Ceci dit il existe des conteneurs peut être plus adapté pour ce que tu veux faire, par exemple les std::set. Que cherches-tu à faire ?
Bonne chance
cedrixi
Messages postés
1
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
9 août 2007
9 août 2007 à 12:03
9 août 2007 à 12:03
C'est bien ce que je pensais. Pour ce que je cherche à faire, c'est lister les points d'un snake multi-échelle, ce qui revient juste à une gestion d'une liste ordonnée évolutive, avec des insertions où je veux. Je voudrai rester en Vector (histoire de compatibilité avec le projet dans lequel je m'insère...). Mais bon, je peux très bien faire
V.insert(V.begin() + pos, value);
au lieu d'accéder à V[pos]
et hop pas d'itérateur
Merci pour ton aide en tout cas!
c
V.insert(V.begin() + pos, value);
au lieu d'accéder à V[pos]
et hop pas d'itérateur
Merci pour ton aide en tout cas!
c
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
9 août 2007 à 20:53
9 août 2007 à 20:53
A ce moment là c'est mieux d'utiliser un std::set, si tu as une relation d'ordre définie sur tes éléments. Par défaut un std::set utilise l'opérateur <. Pour un std::set l'accès et l'insertion se font en O(log(n)) et sans réallocation.
Le problème des insertions dans un vector (de même que les push_back) c'est que si tu dois réallouer ton vecteur, tu perds beaucoup de temps (il faut reparcourir le vector). De plus, une insertion dans ton cas force en plus à reparcourir tout les éléments situés après l'endroit où tu insères. A noter que la méthode vector propose une méthode reserve pour éviter les problème de réallocation si tu connais la taille maximale du vector.
Bref à toi de voir ce qui est le plus adapté...
Le problème des insertions dans un vector (de même que les push_back) c'est que si tu dois réallouer ton vecteur, tu perds beaucoup de temps (il faut reparcourir le vector). De plus, une insertion dans ton cas force en plus à reparcourir tout les éléments situés après l'endroit où tu insères. A noter que la méthode vector propose une méthode reserve pour éviter les problème de réallocation si tu connais la taille maximale du vector.
Bref à toi de voir ce qui est le plus adapté...