首页 > 解决方案 > 如何更紧凑地初始化和返回向量的向量?

问题描述

如何更紧凑地初始化和返回向量的向量?下面的代码在 和 的两种情况下显得臃肿且K==1重复K==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作为参考并将多个向量插入其中。它在内部工作的方式对这个问题无关紧要。

标签: c++

解决方案


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

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

推荐阅读