gpt4 book ai didi

c++ - 在填充另一个容器时是否需要在从一个容器迭代时执行条目拷贝?

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:39 24 4
gpt4 key购买 nike

<分区>

当我有这样的功能时:

std::vector<std::experimental::filesystem::directory_entry> Foo(const std::string& start)
{
std::vector<std::experimental::filesystem::directory_entry> result;

auto paths = std::experimental::filesystem::directory_iterator(start);

for (auto& d : paths) {
if (IsDirectory(d)) {
result.push_back(d);
}
}

return result;
}

使用 auto d 而不是 auto& d 遍历 paths 集合时是否需要执行目录条目的拷贝?

我的直觉如下:

  1. 迭代 paths 时返回 std::experimental::filesystem::v1::directory_entry& 类型的引用。
  2. 然后我将其传递给 push_back 具有以下签名的 vector :void push_back (const value_type& val)

我认为这意味着在我从函数返回一个 vector 后,它将包含引用已经回收的内存的元素,因此我有麻烦了。

所以问题是:我是否必须将其替换为 auto d 还是我遗漏了什么?

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