gpt4 book ai didi

c++ - 引用 unique_ptr 的 vector

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

我有一组unique_ptr。在这里我想拿走其中的一些并将它们返回给调用者。调用者只需要读取内容,所以我想使用常量引用。但我不确定如何使用 unique_ptr 来做到这一点。

这是我用来使用原始指针执行此操作的一些代码:

class entry
{

};
vector<entry*> master;
const vector<entry*> get_entries()
{
vector<entry*> entries;
// peusocode, master contains all entries.
// only some entries are copied, filtered by some predicate
copy_if(master.begin(), master.end(), back_inserter(entries), ...);
}

如何使用 unique_ptr 来做到这一点?我也可以使用 shared_ptr,但所有权非常明确,正如我提到的,调用者不需要写访问权限。

最佳答案

The caller only needs to read the content

如果调用者不参与指针的所有权,那么就使用原始指针。事实上,原始指针可以被认为是没有所有权的指针

std::vector<std::unique_ptr<entry>> master;

std::vector<const entry*>
get_entries()
{
std::vector<const entry*> entries;

for ( auto const &ptr : master ) {
/* if something satisfied */
entries.push_back(ptr.get());
}
return entries;
}

关于c++ - 引用 unique_ptr 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48720204/

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