繁体   English   中英

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

[英]How to initialize and return vector of vectors more compactly?

如何更紧凑地初始化和返回向量的向量? 对于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;
}

function PopulateVectors()接受res作为参考并将多个向量插入其中。 它在内部的工作方式对这个问题并不重要。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM