JavaからC++に移植する際に、LinkedHashMapをstd :: mapに変換する方法がわかりません。私はLinkedHashMapを変更することはできませんが、私はstd :: mapに制限されていません。同じキー/値のペアを作成する必要がありますが、順序付け/ハッシング/それ以外のものは本当に重要ではありません。Java LinkedHashMapをC++に変換するstd :: map
変換するJavaコード:
List<Face> faces = new ArrayList<Face>(modelFull.faces.length);
Map<Point3D, Integer> map = new LinkedHashMap<Point3D, Integer>();
for (int i = 0; i < modelFull.faces.length; i++) {
Face f = new Face(modelFull.faces[i]);
faces.add(f);
for (int k = 0; k < 3; k++) {
Point3D p = f.pts[k];
Integer v = map.get(p);
if (v == null) {
v = 0;
}
map.put(p, v + 1);
}
}
私の試み:
std::map<RVPoint3D, int> pointMap;
auto modelFaces = modelFull.getFaces();
for (const auto &face : modelFaces)
{
Face newFace = Face(face);
for (int k = 0; k < 3; ++k)
{
RVPoint3D pt = newFace.getPts()[k];
++pointMap[pt];
}
faces.push_back(newFace);
}
Java実装はサイズ7523のマップを作成し、C++ 1は7967.の合計を視察45234個の要素があります。ですどちらも、潜在的なキーを通して正しく反復されているようです。
ここからどこに行くのかわかりません。私は演算子、カスタムコンパレータ、カスタムハッシュ関数などをオーバーロードしようとしました。あなたがマップに入れたときに、それに1
を追加v
0
に設定新しいマップの項目のjava
バージョンで
ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、問題を示す[最小限の、完全で実証可能な例](http://stackoverflow.com/help/mcve)に戻ってください。 –
解決策を質問の更新ではなく回答として投稿してください。これは、混乱を避けるためです。ありがとうございました。 – Bugs