Outils pour utilisateurs

Outils du site


lang:cpp:container

Ceci est une ancienne révision du document !


Spécificités

Différence entre les conteneurs

Conteneur Mémoire contiguë
vector Oui
array Oui
deque Non
list Non
forward_list Non
stack Non
queue Non
priority_queue Dépend

Choosing the Right Container: Sequential Containers Archive du 09/09/2019 le 13/11/2019

std::set

Les itérateurs begin et end renvoient un type const. std::set est ordonné et sa clé est stockée dans un arbre de type red-black.

C++ std::set update is tedious: I can't change an element in place Archive du 07/02/2010 le 02/01/2020

set::vector

Il y a un cas particulier pour std::vector<bool>. La mémoire est optimisée donc un octet peut stocker 8 bits. Ce qui fait que l'accès à la propriété data() est bloquée. Si cette optimisation n'est pas souhaitée, il faut utiliser un std::vector<unsigned char>.

Manipulation des données

std::string et std::array

  • std::array to std::string
std::string str(std::begin(arr), std::end(arr));
  • std::string to std::array
std::string toto("tototototototo1234");
std::array<char, 16> arr{};
std::copy_n(toto.begin(), std::min(toto.length(), static_cast<size_t>(16)), arr.data());

Comparaison de containers

#include <utility>
 
std::vector<int> v1 = std::vector<int>{ 1, 2, 3, 4, 5 };
std::set<int> s2 = std::set<int>{ 2, 3, 4, 5, 6 };
 
bool v1smaller = std::lexicographical_compare(v1.begin(), v1.begin(), s2.begin(), s2.end());
lang/cpp/container.1586180781.txt.gz · Dernière modification : 2020/04/06 15:46 de root