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

sim*_*mon 7 c++ vector c++11

std::vector<std::string>在这个向量中有一个push_back来自txt文件的字符串,如下所示:

std::string line;
std::vector<std::string> path;
while(getline(fichier, line))
{    
   path.push_back(line);
}
Run Code Online (Sandbox Code Playgroud)

我想将路径vector分成vector10行的另一个例如.所以如果我的大小vector是25,我想要另外2个10元素的矢量和vector5个元素中的一个.

最好的方法是什么?

krz*_*zaq 7

最好是一个意见问题,但你可以做以下事情(与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);
}
Run Code Online (Sandbox Code Playgroud)

演示

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

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));
}
Run Code Online (Sandbox Code Playgroud)

演示