c++ 将set转为list
时间: 2023-10-06 07:05:19 浏览: 112
要将一个 `std::set` 转换为 `std::list`,可以使用 `std::copy` 算法和 `std::back_inserter` 迭代器,如下所示:
```cpp
#include <set>
#include <list>
#include <algorithm>
int main() {
std::set<int> mySet = {1, 2, 3, 4, 5};
std::list<int> myList;
std::copy(mySet.begin(), mySet.end(), std::back_inserter(myList));
return 0;
}
```
这里将 `mySet` 的元素复制到 `myList` 中,`std::back_inserter` 是一个迭代器适配器,将插入操作转换为 `push_back` 操作。
相关问题
将下列c++代码转为Java#include<vector> #include<list> #include<deque> #include<queue> #include<stack> #include<map> #include<set> #include<algorithm> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<cmath> using namespace std; typedef long long LL; const int N=3000009; int a[8];void move(int x,int y,int t) { while(a[x]) { if(a[t]==0) { a[t]++;a[y]++; printf("%c%c+\n",t+'A',y+'A'); } a[t]--; a[x]--; printf("%c%c-\n",t+'A',x+'A'); } } int main() { int i,j,n; for(i=0;i<8;i++) scanf("%d",&a[i]); int s1=a[0]+a[2]+a[5]+a[7],s2=a[1]+a[3]+a[4]+a[6]; if(s1!=s2) { printf("IMPOSSIBLE\n"); return 0; }move(2,0,1); move(5,0,4); move(7,0,4); move(6,4,5); move(1,4,0); move(3,4,0); while(a[0]--) printf("AE-\n"); return 0; }
在Java中,需要去掉头文件,并使用Java中的数据结构代替C++中的数据结构。同时,Java中需要使用System.out.print代替printf。
以下是转换后的Java代码:
import java.util.*;
public class Main {
static long N = 3000009;
static int[] a = new int[8];
static void move(int x, int y, int t) {
while (a[x] != 0) {
if (a[t] == 0) {
a[t]++;
a[y]++;
System.out.println((char)(t+'A') + "" + (char)(y+'A') + "+");
}
a[t]--;
a[x]--;
System.out.println((char)(t+'A') + "" + (char)(x+'A') + "-");
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 8; i++) {
a[i] = sc.nextInt();
}
int s1 = a[0] + a[2] + a[5] + a[7];
int s2 = a[1] + a[3] + a[4] + a[6];
if (s1 != s2) {
System.out.println("IMPOSSIBLE");
return;
}
move(2, 0, 1);
move(5, 0, 4);
move(7, 0, 4);
move(6, 4, 5);
move(1, 4, 0);
move(3, 4, 0);
while (a[0] != 0) {
System.out.println("AE-");
a[0]--;
}
}
}
阅读全文