5 votes

Enlever le premier élément du vecteur

Voici mon type :

struct Rule
    {
        int m_id = -1;
        std::wstring name;
        double angle;
    };

Vecteur de ce type :

std::vector<Rule>& topPriorityRules;

J'essaie d'effacer le premier élément :

topPriorityRules.erase(topPriorityRules.begin());

Mais je n'y arrive pas. Il semble que je doive surcharger les itérateurs.

Quelqu'un peut-il me suggérer une surcharge d'itérateur pour mon struct ?

21voto

user2079303 Points 4916

Étant donné que

std::vector<Rule>& topPriorityRules;

La façon correcte de supprimer le premier élément du vecteur référencé est la suivante

topPriorityRules.erase(topPriorityRules.begin());

ce qui est exactement ce que vous avez suggéré.

On dirait que je dois surcharger les itérateurs.

Il n'est pas nécessaire de surcharger un itérateur afin d'effacer le premier élément de la liste. std::vector .


P.S. Le vecteur (tableau dynamique) est probablement un mauvais choix de structure de données si vous avez l'intention d'effacer depuis le début.

8voto

VCSEL Points 154

Deux suggestions :

  1. Utilisez std::deque au lieu de std::vector pour de meilleures performances dans votre cas spécifique et utilisez la méthode std::deque::pop_front() .
  2. Repensez (je veux dire : supprimez) les & en std::vector<ScanRule>& topPriorityRules;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X