我有一个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); }
如果你的字符串很大并且你想避免复制,你可以使用移动版本:
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)); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。