已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
昨天关门了。
Improve this question
我有一个向量a{1,2,3,4,5,6,7,8,9,10},我需要将它拆分成不同长度的向量,我可以设置向量的最大长度,向量的下一次拆分应该将向量的大小减少1
我试着解释得更好:
输入:标准::向量a{1,2,3,4,5,6,7,8,9,10},整数大小= 4
输出:标准品::矢量<std::vector >B{{1,2,3,4},{5,6,7},{8,9},{10}}
我知道如何把矢量分成两个相等的部分。
std::vector<std::vector<double>> SplitVector(const std::vector<double >& vec, size_t n)
{
std::vector<std::vector<double>> outVec;
size_t length = vec.size() / n;
size_t remain = vec.size() % n;
size_t begin = 0;
size_t end = 0;
for (size_t i = 0; i < std::min(n, vec.size()); ++i)
{
end += (remain > 0) ? (length + !!(remain--)) : length;
outVec.push_back(std::vector<double>(vec.begin() + begin, vec.begin() + end));
begin = end;
}
return outVec;
}
但是我需要除以这个向量,使得下一个向量的大小小于1。
1条答案
按热度按时间yzxexxkh1#
此解决方案将满足您的要求,而且我相信它比您的解决方案更易于理解:
std::vector<double> a = {1,2,3,4,5,6,7,8,9,10}
、n = 4
std::vector<std::vector<double>> v = {{1,2,3,4},{5,6,7},{8,9},{10}}
但是,请记住,您没有指定向量除法不完美的情况(向量
a
具有更多值),因此此解决方案将忽略n == 1
之后的任何值。