C将矢量分割成n个矢量的最佳方法

我有一个std :: vector< std :: string>在这个向量中我从txt文件push_back字符串,如下所示:
std::string line;
std::vector<std::string> path;
while(getline(fichier,line))
{    
   path.push_back(line);
}

我想将路径向量分成另一个10行的向量,例如.
因此,如果我的矢量大小是25,我想要另外2个10元素的矢量和5个元素的矢量.

最好的方法是什么?

解决方法

最好的是意见问题,但你可以做类似以下的事情(使用bunch_size为10):
for(size_t i = 0; i < strings.size(); i += bunch_size) {
    auto last = std::min(strings.size(),i + bunch_size);
    bunches.emplace_back(strings.begin() + i,strings.begin() + last);
}

demo

如果你的字符串很大并且你想避免复制,你可以使用移动版本:

for(size_t i = 0; i < strings.size(); i += bunch_size) {
    auto last = std::min(strings.size(),i + bunch_size);
    auto index = i / bunch_size;
    auto& vec = bunches[index];
    vec.reserve(last - i);
    move(strings.begin() + i,strings.begin() + last,back_inserter(vec));
}

demo

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...