splice alternative - 从列表中移动元素而不从原始列表中删除它们

时间:2016-02-16 16:51:20

标签: c++

我想将一个列表与另一个列表合并到另一个列表中。目前我用这个:

v_unique_sorted_list = v_list;
v_unique_sorted_list.splice(v_unique_sorted_list.end(), u_list);
v_unique_sorted_list.sort();
v_unique_sorted_list.unique();

我想要同样但不删除u_list中的元素。有替代方法还是我必须使用循环insert

2 个答案:

答案 0 :(得分:2)

使用the 4th std::list::insert overload为您执行循环,它不会影响#include <iostream> #include <cassert> #include <iterator> #include <string> #include <ctime> #include <cstdlib> #include <stdio.h> #include <stdlib.h> #include <math.h> using namespace std; string createRandomString(int); int main(){ string test; test=createRandomString(6); cout << test; return 0; } string createRandomString(int stringlength){ srand(time(NULL)); string lettersToUse="ABCDEFG"; string newOne=""; for(int i=0;i<=stringlength-1;i++){ newOne=newOne+lettersToUse[rand() % lettersToUse.length()]; } return newOne; }

u_list

答案 1 :(得分:2)

如果您要将u_list的元素复制到v_unique_sorted_list,请使用std::list::insert

v_unique_sorted_list = v_list;
v_unique_sorted_list.insert(v_unique_sorted_list.end(), u_list.begin(), u_list.end());
v_unique_sorted_list.sort();
v_unique_sorted_list.unique();

这会将u_list中的元素复制到v_unique_sorted_list并在v_unique_sorted_list.end()之前插入它们。这是一个线性操作,并使u_list保持不变。