function template
<memory>

std::allocate_shared

template <class T, class Alloc, class... Args>  shared_ptr<T> allocate_shared (const Alloc& alloc, Args&&... args);
分配 shared_ptr
为类型对象分配内存T使用 alloc 并通过将 args 传递给其构造函数来构造它。该函数返回一个类型为shared_ptr<T>的对象,该对象拥有并存储指向已构造对象的指针(其 use count1).

此函数使用 alloc 来分配对象的存储。一个类似的函数,make_shared 使用::new来分配存储。

参数

alloc
一个分配器对象。
Allocallocator_traits 定义良好的类型。
args
传递给T's 构造函数。
Args的元素列表。是一个或多个类型的列表。

返回值

一个 shared_ptr 对象,它拥有并存储指向新分配的类型对象的指针T.

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// allocate_shared example
#include <iostream>
#include <memory>

int main () {
  std::allocator<int> alloc;    // the default allocator for int
  std::default_delete<int> del; // the default deleter for int

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

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

  auto baz = std::allocate_shared<std::pair<int,int>> (alloc,30,40);

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

  return 0;
}

输出
*foo: 10
*bar: 20
*baz: 30 40


另见