如何更紧凑地初始化和返回向量的向量?

如何更紧凑地初始化和返回向量的向量?下面的代码看起来臃肿,重复的两种情况时,K==1K==N

std::vector< std::vector<unsigned int> > Foobar(const unsigned int K, const unsigned int N)
{
    std::vector< std::vector<unsigned int> > res;

    if (K == 1)
    {
        std::vector<unsigned int> r(1,N);  //One N.
        res.emplace_back(r);
        return res;
    }

    if (K == N)
    {
        std::vector<unsigned int> r(N,1);  //N ones.
        res.emplace_back(r);
        return res;
    }

    PopulateVectors(res, K+1, N+1);
    PopulateVectors(res, K, N);
    return res;
}

该函数PopulateVectors()接受res作为引用并将多个向量插入其中。它内部的工作方式对这个问题无关紧要。

回答

if (K == 1)
{
  return {{N}};
}

if (K == N)
{
  return {std::vector<unsigned int>(N,1)};
}


以上是如何更紧凑地初始化和返回向量的向量?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>