用 Stl 方式代替 vector /out.clear();out.reserve(n);循环{out.p_b(el.foo)}/

Stl way to fill vector instead /out.clear();out.reserve(n);loop{out.p_b(el.foo)}/

提问人:amordo 提问时间:2/20/2022 最后编辑:amordo 更新时间:2/21/2022 访问量:60

问:

有没有一个函数来填充相同的含义?stdout

template <class T> struct S {
  template <class U> void f(std::vector<U> &out) {
    out.clear();
    out.reserve(v_.size());
    for (const auto &el : v_) {
      out.push_back(el.foo);
    }
  }
  std::vector<T> v_;
};
C++ 算法 C++17 标准

评论

0赞 WhozCraig 2/20/2022
我敢问什么是?无论如何,从外观上看,您有一个基本功能,假设您想要相同的结果,并且内容和成员内容之间存在 1 对 1 的关系(无论它是什么)。v_transformoutfoov_
2赞 justANewb stands with Ukraine 2/20/2022
std::填充
0赞 amordo 2/20/2022
@WhozCraig是一个向量,我想有一个特定的元素字段。你能在评论中提出建议吗?v_outv_transform
0赞 amordo 2/20/2022
@justANewbie我看不到可以帮助我,而无需使用迭代器,这会导致开销的 ctor 调用。请发布示例。std::fillout.resize()end()
1赞 Adrian Maire 2/21/2022
我相信 clear()、reserve(特定于一些容器)和 fill with uncompatible 类型的组合非常具体,我不知道有任何等效的多合一 STL 函数。您可以查看 or 'for_each',它可以帮助使此代码“无循环”。copy

答: 暂无答案