当前位置: 首页 > 知识库问答 >
问题:

如何使用这些初始化创建unique_ptr?

夏学名
2023-03-14

使用具有以下初始化的std::make_unique创建std::unique_ptr的等效版本是什么?

int main()
{
    // Single object
    // 1
    new int; // Indeterminate value
    // 2 
    new int(); // Zero initialized
    // 3
    new int(7); // Initialized with 7

    // Arrays
    // 1
    new int[10]; // Indeterminate values
    // 2
    new int[10](); // All zero-initialized
    // 3
    new int[10]{ 7, 6, 5, 4 }; // Initialized with list, rest all zero


   }

共有1个答案

陆仲渊
2023-03-14

对应部分为:

// Single object
// 1
new int; // Indeterminate value
std::make_unique_for_overwrite<int>(); // since C++20

// 2 
new int(); // Zero initialized
std::make_unique<int>();

// 3
new int(7); // Initialized with 7
std::make_unique<int>(7);

// Arrays
// 1
new int[10]; // Indeterminate values
std::make_unique_for_overwrite<int[]>(10); // Since C++20
// 2
new int[10](); // All zero-initialized
std::make_unique<int[]>(10);
// 3
new int[10]{ 7, 6, 5, 4 }; // Initialized with list, rest all zero
std::unique_ptr<int[]>{ new int[10]{ 7, 6, 5, 4 } };

std::make_unique_for_overwrite仅为C++20。

 类似资料:
  • 我使用FFMPEG-segment对桌面上的视频捕获进行分段,并通过网络发送它们,以便提供给客户,并使用dash.js播放。问题是播放器正在搜索初始化段,而我似乎不知道如何创建它。 我使用以下ffmpeg命令创建段: 我为流创建的清单如下所示: 播放机调试模式打印以下内容: 如何为生成的段创建初始化段?我似乎无法让它起作用。

  • 问题内容: 我正在尝试移植以下Python代码行: Java。我能够通过这种方式做到这一点: 我尝试使用类似的变量方法: 但我得到这个错误: 我想我需要使用该值设置一个特殊的属性,或者以后需要对其进行初始化。但是我找不到路。 我计划对大多数其他tf方法执行相同的操作(这是我目前的工作)。所以我想了解如何自己提出答案。例如,通过查看以下Python来源: https://github.com/ten

  • 我希望转换之间的HLS和MPEG破折号。我不能访问原始的完全串联的视频文件,只有个别的HLS段。 在进行到MPEG破折号的转换时,我需要为破折号manifest.mpd文件提供一个初始化段。 我的问题是: null 非常感谢。 更新:使用原始hls段的流代码段。视频一直在播放,但只是黑色的。

  • 我有一组常量值,可以作为列表使用。使用这些值,我必须创建一个键值对对象,并且必须将该对象添加到列表中。我想在JAVA 8中使用流API来实现这一点。下面是使用for循环的示例实现 这可以使用流减少操作来实现吗?

  • 我有一个以下类别的StorageProxy。java(接口)StorageProxyImpl1。java(StorageProxy接口的实现1) 我在Application类中有一个main方法,用于初始化和使用Resource1和Resource2。 我想为StorageProxy提供依赖注入的指导,这样在创建新的实现时就不会有太大的麻烦。我希望Resource1和Resource2使用相同的S

  • 问题内容: 我想在单个语句(可能包含多个嵌套语句)中声明一个完全填充的地图字段,如下所示: 匿名初始化程序不会这样做,原因与调用返回新填充映射的函数不会这样做的原因相同:匿名初始化程序需要两个顶级语句:一个用于变量声明,一个用于方法或初始化器。 双花括号(和)惯用语可以工作,但是它创建了一个Extended的新类,而我不喜欢由此表示的开销。 Java 8的lambda也许提供了一种更好的方法来实现