Articles of stl

Quels algorithmes sont utilisés dans C ++ 11 std :: sort dans différentes implémentations STL?

Le standard C ++ 11 garantit que std::sort a la complexité O (n logn) dans le pire des cas . Ceci est différent de la garantie moyenne en C ++ 98/03, où std::sort pourrait être implémenté avec Quicksort (peut-être combiné avec un sorting par insertion pour n), qui a O (n ^ 2) dans le […]

Comment supprimer la constance de const_iterator?

Dans le cadre de cette question, const_iterators – const_iterators plus rapide? J’ai une autre question sur const_iterators . Comment supprimer la constance d’un const_iterator ? Bien que les iterators soient des formes généralisées de pointeurs mais que const_iterator et iterator s soient deux choses différentes. Par conséquent, je crois que je ne peux pas non […]

Comment changer un élément particulier d’un vecteur STL C ++

vector l; for(int i=1;i<=10;i++){ l.push_back(i); } Maintenant, par exemple, comment changer le 5th element du vecteur en -1 ? J’ai essayé d’ l.assign(4, -1); Il ne se comporte pas comme prévu. Aucune des autres méthodes vectorielles ne semble correspondre. J’ai utilisé le vecteur car j’ai besoin d’une fonctionnalité d’access aléatoire dans mon code (en utilisant […]

Meilleur moyen de copier un vecteur dans une liste en STL?

Est itérant à travers le vecteur en utilisant un iterator et en copiant dans une liste la méthode de copie la plus optimale. Des recommandations?

Est-ce que std :: vector :: swap invalide les iterators?

Si je permute deux vecteurs, leurs iterators restront-ils valides, pointant maintenant simplement vers le “autre” conteneur, ou l’iterator sera-t-il invalidé? C’est-à-dire, donné: using namespace std; vector x(42, 42); vector y; vector::iterator a = x.begin(); vector::iterator b = x.end(); x.swap(y); // a and b still valid? Pointing to x or y? Il semble que le std […]

Comment effacer des éléments de conteneurs STL?

Comment effacer des éléments de conteneurs STL, ayant une valeur spécifiée ou satisfaisant à certaines conditions ? Existe-t-il une seule façon commune ou uniforme de le faire pour différents types de conteneurs?

Que dois-je obtenir de front () du conteneur std vide?

Si front() renvoie une référence et que le conteneur est vide, qu’est-ce que j’obtiens, une référence non définie? Est-ce que cela signifie que je dois vérifier empty() avant chaque front() ?

La fonction std :: transform-like qui renvoie un conteneur transformé

J’essaie d’implémenter une fonction similaire à l’algorithme std::transform mais au lieu de prendre l’iterator de sortie par un argument, je veux créer et renvoyer un conteneur avec des éléments d’entrée transformés. Disons qu’il s’appelle transform_container et prend deux arguments: container et functor. Il devrait renvoyer le même type de conteneur mais éventuellement paramétré par un […]

C ++, puis-je initialiser statiquement une carte std :: au moment de la compilation?

Si je code ceci std::map example = { (1, ‘a’), (2, ‘b’), (3, ‘c’) }; alors g ++ me dit deducing from brace-enclosed initializer list requires #include in C++98 ‘example’ must be initialized by constructor, not by ‘{…}’ et cela m’agace légèrement parce que le constructeur est run-time et peut théoriquement échouer. Bien sûr, si […]

Pourquoi les opérateurs d’access vectoriel ne sont pas spécifiés comme noexcept?

Pourquoi les fonctions de l’ operator[] , front et back std::vector ne sont pas spécifiées comme noexcept ?