[C++] Insert dans un vector sans iterator
Résolu/Fermé
cedrixi
-
8 août 2007 à 16:28
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 9 août 2007 à 20:53
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 9 août 2007 à 20:53
A voir également:
- [C++] Insert dans un vector sans iterator
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Activer touche insert sur ASUS UX32A - Forum Clavier
- Problème touche inser ✓ - Forum Clavier
- Accéder à la fonction secondaire "insert" de ma touche "Delete" - Forum PC portable
3 réponses
mamiemando
Messages postés
33372
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 802
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
33372
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 802
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é...