7

ローカルがあり、その要素の実際のコピー(つまり)std::vector<std::reference_wrapper<T> >を返したいと考えています。ループよりも良い方法はありますか?std::vector<T>

例:

std::vector<T> foobar() {
    std::vector<std::reference_wrapper<T> > refsToLocals;
    /*
      do smth with refsToLocals
    */
    std::vector<T> copyOfLocals;
    for (auto local : refsToLocals)
        copyOfLocals.insert_back(local.get());
    return copyOfLocals;
}
4

2 に答える 2

1

次のように使用できますstd::copy

std::copy(
    refsToLocals.begin(), 
    refsToLocals.end(), 
    std::back_inserter(copyOfLocals));

必ず call を使用してくださいcopyOfLocals.reserve(refsToLocals.size())。コピーとヒープ割り当てを最小限に抑えます。

于 2015-12-26T00:14:39.840 に答える