如何更紧凑地初始化和返回向量的向量?
如何更紧凑地初始化和返回向量的向量?下面的代码看起来臃肿,重复的两种情况时,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作为引用并将多个向量插入其中。它内部的工作方式对这个问题无关紧要。
回答
if (K == 1)
{
return {{N}};
}
if (K == N)
{
return {std::vector<unsigned int>(N,1)};
}