我想逐行读取文件并将读取行分派给不同的std :: vector,以便我可以并行处理这些行。像这样的东西(甚至没有编码)
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++
}
有没有办法避免将line
复制到my_vectors[.]
,以便getline
直接填充向量?
答案 0 :(得分:3)
您可以随时使用std::move
http://en.cppreference.com/w/cpp/utility/move
答案 1 :(得分: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++;
}