java - 如何将“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++,或者是否有另一种方法可以相互添加集合并删除它们。
提前致谢!
解决方案
第一个需要像这样的开始和结束迭代器:
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
等)
推荐阅读
- c - 如何在C中正确打印结构类型数组的所有元素?
- python - 使用块从 MySQL 数据库中检索大数据并保存它们 Dataframe Pandas
- c++ - Visual Studio Code 在哪里查找 includePath(C/C++ 扩展)
- for-loop - 对于/在探针中。object.variable 和 object[variable] 有什么区别?
- android - SharedPreferences 不保存布尔属性
- python - 在 Python 中,我可以在运行时更改类的结构吗?
- python - 关闭 PIR 运动传感器
- excel - 如何使用vba宏更新excel中列的过滤单元格的值?
- angular - 我无法根据类别获取课程
- c - OpenGL 上的无限循环