我有一个很大的list<pair<T, T>>
。为了加快我的程序,我想使用不同的线程来填充列表,然后将它们连接到1个大列表。
我找到了这个解决方案:Basically same question
为了测试这个解决方案,我创建了2个列表,每个列表包含2个元素,并按照说明连接它们。
list1.splice(list1.end(), list2);
但是这个操作持续几秒,这对我来说只需要调整一些指针就好了。
那么连接2个列表的正确方法是什么?
编辑:
cout << "Filling matrix... ";
for(int i = 0; i < n; ++i) {
list1.push_back(make_pair(i, false));
list2.push_back(make_pair(i, false));
}
cout << "OK" << endl;
cout << "Merging lists... ";
clock_t begin = clock();
list1.splice(list1.end(), list2);
clock_t end = clock();
cout << "OK" << endl;
double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
cout << "Time: " << elapsed_secs << endl;
输出:
填充矩阵......好的 合并列表......好的 时间:4.54