c++ - 引用 unique_ptr 的 vector

标签 c++ smart-pointers

我有一组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/

相关文章:

c++ - opencv 的 reprojectImageTo3D() 中的深度图值

rust - 遍历中RefCell的循环引用借用

c++ - 如何实现 observer_ptr?

c++ - return 语句中的 boost::scoped_array::get()

c++ - 为什么指针返回时不能自动转换为unique_ptr?

c++ - MessageBox 和 ShellExecute 成功,但如果在应用程序退出之前立即调用则不会显示任何内容

c++ - 使用 pybind11 构建的 python 模块的 Linux 平台标签

c++ - 函数指针是 C++ 中的函数对象吗?

c++ - 在 C++ 中创建动态类型

c++ - 是否可以将 SDL2 与智能指针一起使用?