我一直试图将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 ++,或者是否存在另一种向彼此添加和删除集合的方法。
提前致谢!
最佳答案
第一个需要像这样的begin和end迭代器:
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
等)