std::inplace_vector<T,N>::try_append_range
template< container-compatible-range<T> R >
constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg );
|
(depuis C++26) (supprimé en C++26) |
|
Ajoute des copies des éléments initiaux dans rg avant end(), jusqu'à ce que tous les éléments soient insérés ou que le stockage interne soit épuisé (c'est-à-dire que size() == capacity() est true).
Tous les itérateurs et références restent valides. L'itérateur end() est invalidé.
Chaque itérateur dans rg est déréférencé au plus une fois.
Paramètres
| rg | - |
une
plage compatible avec les conteneurs
, c'est-à-dire une
input_range
dont les éléments sont convertibles en
T
|
| Exigences de type | ||
-
T
doit être
EmplaceConstructible
dans
inplace_vector
à partir de
*
ranges::
begin
(
rg
)
. Sinon, le comportement est indéfini.
|
||
Valeur de retour
Un itérateur pointant vers le premier élément de rg qui n'a pas été inséré dans * this , ou ranges:: end ( rg ) si aucun tel élément n'existe.
Complexité
Linéaire dans le nombre d'éléments insérés.
Exceptions
Toute exception levée par l'initialisation de l'élément inséré.
inplace_vector
fournit la
garantie de sécurité d'exception de base
, c'est-à-dire que tous les éléments du conteneur avant l'appel sont préservés, et tous les éléments déjà insérés (avant l'exception, le cas échéant) sont également préservés.
Notes
| Cette section est incomplète Raison : Expliquer le but de cette API. |
| Test de fonctionnalité macro | Valeur | Norme | Fonctionnalité |
|---|---|---|---|
__cpp_lib_inplace_vector |
202603L |
(C++26) | Supprimé try_append_range
|
Exemple
#include <cassert>
#include <initializer_list>
#include <inplace_vector>
int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
using I = std::inplace_vector<int, 8>;
auto nums = I{1, 2, 3};
const auto rg = {-1, -2, -3};
auto it = nums.try_append_range(rg);
assert(nums.size() == 6);
assert((nums == I{1, 2, 3, -1, -2, -3}));
assert(it == rg.end());
it = nums.try_append_range(rg);
assert(nums.size() == 8);
assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2}));
assert(it == rg.begin() + 2);
#endif
}
Voir aussi
|
ajoute une plage d'éléments à la fin
(fonction membre publique) |
|
|
ajoute un élément à la fin
(fonction membre publique) |
|
|
tente d'ajouter un élément à la fin
(fonction membre publique) |
|
|
ajoute inconditionnellement un élément à la fin
(fonction membre publique) |
|
|
construit un élément en place à la fin
(fonction membre publique) |
|
|
tente de construire un élément en place à la fin
(fonction membre publique) |
|
|
construit inconditionnellement un élément en place à la fin
(fonction membre publique) |
|
|
supprime le dernier élément
(fonction membre publique) |
|
|
crée un
std::back_insert_iterator
du type déduit de l'argument
(fonction template) |