1

hereから Rvalue 参照を理解しようとしている間、私は2つのことを理解できません

  1. ベクトルに N 個の文字列がある場合、各コピーには N+1 個のメモリ割り当てと [...]

「N+1」のこの+1は何ですか?

2.筆者がいきなり以下のガイドラインにたどり着いた経緯

ガイドライン: 関数の引数をコピーしないでください。代わりに、それらを値で渡し、コンパイラーにコピーさせます。

何か不足していますか?

4

1 に答える 1

3

「N+1」のこの+1は何ですか?

新しいベクターの基になる配列を作成するための 1 つの割り当て、次にベクター内の N 個の文字列のそれぞれに 1 つずつ、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;
}
于 2010-09-02T03:58:43.623 に答える