gpt4 book ai didi

c++ - 在模板化函数中使用 unique_ptr、vector 和 int[]

转载 作者:行者123 更新时间:2023-11-30 01:11:39 26 4
gpt4 key购买 nike

假设我有 3 个变量:

vector<int> vec(3);
int stat[3];
auto dyn = make_unique<int[]>(3);

如果我知道大小是 3,我可以初始化其中的任何一个:

for(auto i = 0; i < 3; ++i) X[3] = i;

其中 Xvecstatdyn。但我希望能够通过再次传入 X 在模板中执行此操作。为此,我需要的是:

  1. 包含的类型
  2. 容器尺寸

我可以在这样的函数中得到它吗:

template <typename T>
void init(T& X);

或者我无法从 unique_ptr 中提取大小信息?还是以通用的方式打字? (我已将此问题标记为 C++17,希望可以使用 size。)

最佳答案

您将无法从唯一指针获取大小。当您使用 auto dyn = make_unique<int[]>(3);它被翻译成

make_unique<int[]>(new int[3]())

这是一个指针,我们丢失了大小信息。数组重载对唯一指针所做的所有操作都是更改 delete调用破坏delete[] .如果你想使用 unique_ptr "array"那么你需要传递大小。

关于c++ - 在模板化函数中使用 unique_ptr<int[]>、vector<int> 和 int[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35636160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com