=====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 | [[https://embeddedartistry.com/blog/2017/09/11/choosing-the-right-container-sequential-containers/|Choosing the Right Container: Sequential Containers]] {{ :lang:cpp:container:choosing_the_right_container_sequential_containers_embedded_artistry_2019-11-13_11_44_12_.html |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. [[https://stackoverflow.com/questions/2217878/c-stdset-update-is-tedious-i-cant-change-an-element-in-place|C++ std::set update is tedious: I can't change an element in place]] {{ :lang:cpp:container:stl_-_c_std_set_update_is_tedious_i_can_t_change_an_element_in_place_-_stack_overflow_2020-01-02_07_50_36_.html |Archive du 07/02/2010 le 02/01/2020}} ====set::vector==== Il y a un cas particulier pour ''std::vector''. 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''. =====Autres implémentations===== Map et set : https://github.com/martinus/unordered_dense. Tout est stocké dans un ''std::vector''. =====Manipulation des données===== ====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 arr{}; std::copy_n(toto.begin(), std::min(toto.length(), static_cast(16)), arr.data()); =====Interopérabilité===== ====Comparaison de containers==== #include std::vector v1 = std::vector{ 1, 2, 3, 4, 5 }; std::set s2 = std::set{ 2, 3, 4, 5, 6 }; bool v1smaller = std::lexicographical_compare(v1.begin(), v1.begin(), s2.begin(), s2.end()); ====Template==== * D'un container valeur template