Chapel语言中是否支持合并Domain?含多维与一维Domain合并示例
Domain 合并问题的解决方案
你要的这种直接保留原有区间并追加新区间的合并方式,大部分Domain处理工具默认不会这么做——因为它们通常会自动合并重叠或包含的区间(比如{1..6}其实已经包含了{1..2}和{1..5},默认合并后会变成{1..6})。
如果就是要强制保留原始区间结构、单纯做集合的“追加”操作,你可以试试以下两种思路:
- 手动构造区间列表:直接将两个Domain的区间列表拼接后生成新Domain。取出两个Domain的区间数组,做数组拼接,再用拼接后的数组初始化新的Domain对象。
- 禁用自动合并逻辑:部分工具提供了禁用区间合并的参数或选项,创建Domain时指定不进行自动合并,再将两个Domain的内容合并。
举个伪代码示例:
# 假设Domain对象有get_intervals()和from_intervals()方法 domain1 = Domain({1..2, 1..5}) domain2 = Domain({1..6}) combined_intervals = domain1.get_intervals() + domain2.get_intervals() new_domain = Domain.from_intervals(combined_intervals, merge=False)
注意:不是所有Domain实现都支持禁用合并的选项,如果你的工具没有这个功能,手动拼接区间列表是最直接的办法。
内容的提问来源于stack exchange,提问作者Boris Kaptsanov
相关产品推荐
相关产品推荐

