右值参考

发布于 2024-09-16 14:43:28 字数 374 浏览 5 评论 0原文

在尝试从此处,我无法理解两件事

  1. 如果向量中有 N 个字符串,则每个副本可能需要如下 多达 N+1 的内存分配和 [...]

“N+1”中的+1 是什么?

2.作者是如何突然得出以下指导方针的

指南:不要复制你的函数 论据。相反,按值传递它们 并让编译器进行复制。

我错过了什么吗?

While trying to understand Rvalue references from here, I am unable to understand two things

  1. If there are N strings in the vector, each copy could require as
    many as N+1 memory allocations and
    [...]

What is this +1 in 'N+1'?

2.How the author suddenly arrives at the below guideline

Guideline: Don’t copy your function
arguments. Instead, pass them by value
and let the compiler do the copying.

Am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

短暂陪伴 2024-09-23 14:43:28

“N+1”中的 +1 是什么?

一次分配用于为新向量创建基础数组,然后进行 N 次分配,每个分配用于向量中的 N 个字符串。

作者如何突然得出以下指导方针

他认为,

std::vector<std::string> 
sorted2(std::vector<std::string> const& names) // names passed by reference
{
    std::vector<std::string> r(names);         // and explicitly copied
    std::sort(r);
    return r;
}

您应该在将参数传递给函数时让编译器进行复制,而不是显式在函数内部进行复制,

std::vector<std::string> 
sorted2(std::vector<std::string> names)        // names passed by value
{                                              // and implicitly copied
    std::sort(names);
    return names;
}

What is this +1 in 'N+1'?

One allocation to create the underlying array for the new vector, then N allocations, one for each of the N strings in the vector.

How the author suddenly arrives at the below guideline

He is arguing that instead of explicitly making the copy inside of the function,

std::vector<std::string> 
sorted2(std::vector<std::string> const& names) // names passed by reference
{
    std::vector<std::string> r(names);         // and explicitly copied
    std::sort(r);
    return r;
}

you should let the compiler make the copy when you pass the arguments to the function,

std::vector<std::string> 
sorted2(std::vector<std::string> names)        // names passed by value
{                                              // and implicitly copied
    std::sort(names);
    return names;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文