我想将一个列表与另一个列表合并到另一个列表中。目前我用这个:
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
?
答案 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
保持不变。