"转成C++程序语言?-6ren"> "转成C++程序语言?-我用 Java 编写了一个名为 Nod.java 的类。 import java.util.ArrayList; import java.util.Arrays; class Nod { -6ren">
gpt4 book ai didi

java - 如何将Java写的 "ArrayList"转成C++程序语言?

转载 作者:行者123 更新时间:2023-11-30 01:57:44 25 4
gpt4 key购买 nike

我用 Java 编写了一个名为 Nod.java 的类。

import java.util.ArrayList;
import java.util.Arrays;

class Nod {
int[] vol;
String op="";
Nod parent;
int adancime;

Nod (int[] vol, String op,Nod parent,int adancime){
this.vol=vol;
this.op=op;
this.parent = parent;
this.adancime=adancime;
}

public String toString() {
return op;
}

public int getAdancime() {
return adancime;
}

public ArrayList<Nod> getCale(ArrayList<Nod> lnoduri) {
lnoduri.add(0, this);
if (parent != null) lnoduri = parent.getCale(lnoduri);
return lnoduri;
}

public ArrayList<Nod> getCale()
{ return(getCale(new ArrayList<Nod>())); }
}

我想用 C++ 重写它,但我不知道如何用 C++ 重写这两个函数:

public ArrayList<Nod> getPath(ArrayList<Nod> lnoduri) {
lnoduri.add(0, this);
if (parent != null) lnoduri = parent.getPath(lnoduri);
return lnoduri;
}

public ArrayList<Nod> getPath(){
return(getPath(new ArrayList<Nod>()));
}

这些函数存储每个点头到父节点的路径。

你能帮帮我吗?

编辑

因为是相关问题,所以加在这里

我用 Java 为“花瓶”类编写了一个函数:

public ArrayList<Nod> succesori(Nod parent) {

// "Nod" is another class.
ArrayList<Nod> listTest = new ArrayList<Nod>();

// operations/conditions;

listTest.add(new Nod(vol,op,parent,adancime+1));
return(listTest);
}

我想用 C++ 重写:

vector<Nod*> Vase::succesori(Nod *parinte)
{
vector<Nod*> *listTest = new vector<Nod*>();

// operations/conditions;

listTest.insert(new Nod(vol,op,parent,adancime+1));
return (*listTest);
}

但是当我尝试执行此命令时出现错误: listTest.insert(new Nod(vol,op,parent,adancime+1));

IntelliSense:表达式必须有类类型

错误 1 ​​error C2228: '.insert' 的左侧必须有类/结构/union

如何在 listTest 中添加/插入一个新的 Nod 类?

最佳答案

Java 代码看起来有点奇怪。如果你真的想使用递归,那么我建议重写方法如下。

public void getCale(ArrayList<Nod> lnoduri) {
if (parent != null) {
parent.getCale(lnoduri);
}
lnoduri.add(this);
}

public ArrayList<Nod> getCale() {
ArrayList<Nod> result = new ArrayList();
getCale(result);
return result;
}

在 C++ 中,我只会使用一个成员函数。

std::vector<Nod*> getCale()
{
std::vector<Nod*> result;
for (Nod* n = this; n; n = n->_parent) {
result.push_back(n);
}
std::reverse(result.begin(), result.end());
return result;
}

关于java - 如何将Java写的 "ArrayList<ClassNod>"转成C++程序语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18289530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com