gpt4 book ai didi

c++ - 访问 shared_ptr 数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:03 26 4
gpt4 key购买 nike

#include <memory>

int main()
{
std::shared_ptr<double> array (new double [256], [](double * d){
delete [] d;
});
}

我制作了一个 shared_ptr 指向一个 double 组,它有自己的自定义删除器。

现在如何访问数组?假设我希望访问索引为 1 的数组。我尝试了通常的“括号方法”,但出现错误。

单词array 默认指向它的第一个元素,但是如果我想访问第二个元素怎么办?使用增量和括号给我“不匹配运算符”错误。

有人可以向我解释幕后发生的事情吗?

我问这个是为了研究目的,尽管我知道 unique_ptrvector 会做得更好。

最佳答案

括号符号被定义为与指针类型一起使用(你是对的,给定数组 array,表达式 array 退化为具有这种类型的表达式它指向第一个元素)但是,尽管有它的功能,std::shared_ptr 不是指针类型

你必须 obtain the raw pointer first :

array.get()[n];

当然,n 是一个有效的数组下标。

std::unique_ptr 也是这种情况(但请注意,in that case, you do not need to supply your own deleter!)。

关于c++ - 访问 shared_ptr 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30780262/

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