【问题标题】:STL Algorithm for generating a vector用于生成向量的 STL 算法
【发布时间】:2014-11-04 19:20:04
【问题描述】:

我想用STL算法生成一个向量来实现如下

const int N1 = 10; // This can vary
const int offset = 3; // This also can vary
std::vector<int> chans(10);
for (size_t i = 0; i < chans.size(); i++)
{
    chans[i] = offset + N1*i;
}

有什么建议吗?

【问题讨论】:

  • @StevenBurnap,我知道 std::generate,但是为这样简单的事情编写一个单独的函数是否值得。因此,我一直在寻找替代品。
  • @StevenBurnap:谷歌本身并不是不投票的理由。该站点正试图成为开发人员的大型资源。 Google 不是开发者资源。我们应该希望 SO 内容成为第一个 google hit。也就是说,这是一个非常无稽之谈的问题,因为它没有遵循大多数关于提出好问题的准则。
  • @StevenBurnap,std::generate 是唯一的方法吗?如果是这样,请务必投反对票。
  • @MooingDuck:在这种情况下,std::generate_n 可能确实更可取(但尚不清楚您是否将其作为“一部分”包含在 std::generate 中,因为从概念上讲它是这样的)。

标签: c++ algorithm vector stl std


【解决方案1】:

使用 C++14:

std::generate(chans.begin(), chans.end(),
    [=, count = 0]() mutable { return offset + N1 * count++; });

Live example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-15
    • 2023-03-23
    • 1970-01-01
    • 2019-07-29
    • 2017-02-12
    • 2010-10-24
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多