Bibliothèque de mémoire C ++ - allocate_shared

La description

Il alloue de la mémoire pour un objet de type T en utilisant alloc et le construit en passant des arguments à son constructeur. La fonction renvoie un objet de type shared_ptr qui possède et stocke un pointeur vers l'objet construit.

Déclaration

Voici la déclaration pour std :: allocate_shared.

template <class T, class Alloc, class... Args>
  shared_ptr<T> allocate_shared (const Alloc& alloc, Args&&... args);

C ++ 11

template <class T, class Alloc, class... Args>
  shared_ptr<T> allocate_shared (const Alloc& alloc, Args&&... args);

Paramètres

  • args - C'est un objet allocateur.

  • alloc - C'est une liste de zéro ou plusieurs types.

Valeur de retour

Il renvoie un objet shared_ptr.

Exceptions

noexcep - Il ne jette aucune exception.

Exemple

Dans l'exemple ci-dessous, explique std :: allocate_shared.

#include <iostream>
#include <memory>

int main () {
   std::allocator<int> alloc;    
   std::default_delete<int> del; 

   std::shared_ptr<int> foo = std::allocate_shared<int> (alloc,100);

   auto bar = std::allocate_shared<int> (alloc,200);

   auto baz = std::allocate_shared<std::pair<int,int>> (alloc,300,400);

   std::cout << "*foo: " << *foo << '\n';
   std::cout << "*bar: " << *bar << '\n';
   std::cout << "*baz: " << baz->first << ' ' << baz->second << '\n';

   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

*foo: 100
*bar: 200
*baz: 300 400