-1
votes

Comment mettre à jour la clé de carte STL1 avec Key2 et copier la valeur en clé2

J'ai une carte stl. Je veux changer l'une des touches de la carte. Comment puis-je remplacer Key1 avec Key2, puis Copier la valeur sur Key2? Carte [Key2] = Valeur.

merci,


1 commentaires

Que voulez-vous arriver si Key1 n'existe pas?


3 Réponses :


1
votes

Vous ne pouvez pas modifier les touches sur une carte, tout ce que vous pouvez le faire supprimer l'ancienne clé et ajouter la nouvelle clé avec l'ancienne valeur.

par exemple xxx


0 commentaires

0
votes

Outre le fait que vous ne pouvez pas modifier une clé sur une carte, l'opération que vous décrivez ne semble même pas avoir besoin de cette opération ... Si vous dites que vous souhaitez renommer Key1 code> à Key2 Code>, puis mettez ensuite une nouvelle valeur dans code> dans key2 code>, vous pouvez simplement supprimer key1 code> de la carte et de la boutique Valeur Code> dans la fente Key2 code>.

m.erase(key1);
m[key2] = value;


6 commentaires

Comment votre réponse est-elle différente de celle de @john?


Dois-je initialiser la carte Itératrice après avoir effaçée? Si je veux insérer un élément de plus sur la carte, comment puis-je le faire sans corrompre la carte?


@Kunalpuri John's (que j'ai réellement évoqué) insère la valeur de Key1 , tandis que j'ai compris la question comme insérant une nouvelle valeur non liée; Nous interprétons la question de l'OP de manière légèrement différente. Néanmoins, il est probablement de mieux demander cela comme une clarification sous la question de l'OP.


@ user3509719 Quel itérateur parlons-nous? Êtes-vous itération sur la carte?


Oui.Je suis en train de trouver une valeur de clé qui renvoie un itérateur à l'entrée de carte STL.En si je fais effacer et insérer.Can vous suggère dans ce cas.


C'est bien que des informations trop rares pour comprendre le problème. Bien sûr, si vous effacez un élément, tous les itérateurs à celui-ci (et personne d'autre) ne deviennent invalidés, comment cela affecte votre code dépend de la façon dont votre code fonctionne ...



0
votes

Vous ne pouvez pas simplement modifier une clé dans un std :: mappe car ils sont commandés par clé et en modifiant une clé, mettrait probablement la carte en panne. Pour cette raison, les clés sont const .

Vous devez donc ajouter une nouvelle clé et retirer l'ancien. Je pourrais faire quelque chose un peu comme ceci: xxx

par déplacer la valeur à l'emplacement de la nouvelle clé Cela devrait être assez efficace.


0 commentaires