首页 > 解决方案 > 如何将“Set functions”(如 removeAll 和 addAll)从 Java 转换为 C++?可以使用擦除或插入来完成吗?

问题描述

我一直在尝试将 Java 代码转换为 C++,但我偶然发现了这部分代码重复了几次。

//JAVA
TreeSet<String> currentState = new TreeSet<String>();
TreeSet<String> allTransitions = new TreeSet<String>();
       .
       .
       .
currentState.addAll(allTransitions);
       .
       .
       .
currentState.removeAll(allTransitions);

我尝试通过键入以下代码在 C++ 中实现相同的目的:

//C++
set<string> currentState;
set<string> allTransitions;
       .
       .
       .
currentState.insert(allTransitions);
       .
       .
       .
currentState.erase(allTransitions);

当我尝试编译这段代码时,我得到了很多错误,所以我想知道是否可以轻松地将相同的函数从 Java 复制到 C++,或者是否有另一种方法可以相互添加集合并删除它们。

提前致谢!

标签: javac++code-conversion

解决方案


第一个需要像这样的开始和结束迭代器:

currentState.insert(allTransitions.begin(), allTransitions.end());

如果在std::set(您可以将其转换为函数)上进行操作,则使用 for 循环最容易执行第二个:

for(const auto& t: allTransitions)
  currentState.erase(t);

如果您在哪里对排序std::vector/deque/list等进行操作,您可以利用设置功能进行第二次操作(std::set_difference/set_intersection等)


推荐阅读