3

我想逐行读取文件并将读取的行分派到不同的 std::vector(s) 以便我可以并行处理这些行。像这样的东西(甚至没有编码)

int nb_threads = 4;
std::vector my_vectors[nb_threads];
int count_lines = 0;
std::string line;
while (getline(my_stream, line)) {
    my_vectors[count_lines % nb_threads].push_back(line);   
    count_lines++
}

有没有办法避免复制lineintomy_vectors[.]以便getline直接填充向量?

4

2 回答 2

3

你总是可以使用std::move http://en.cppreference.com/w/cpp/utility/move

于 2013-08-21T09:19:10.527 回答
2

离开line是去这里的路。在 C++11 之前,您可以输入push_back一个空字符串,然后读入:

while(true) {
    size_t i = count_lines % nb_threads;
    my_vectors[i].push_back("");   
    if (!getline(my_stream, my_vectors[i].back())) {
        my_stream[i].pop_back();
        break;
    } 
    count_lines++;
}
于 2013-08-21T09:31:41.140 回答