Closed unaunagi closed 1 month ago
すみません。投稿に今気づきました!調べてみたところ、iteratorでSliceできるような機能を作っていて、それが従来のSliceの定義とバッティングするようです。たとえば、it0からit1までをiterateするときにfor e in it0 ..< it1みたいな呼び方ができるはずです。
こちらの件、以下のようにすればひとまず大丈夫そうですので、set_mapのiteratorとしてitemsを使う予定がなければそれでお願いします。
import atcoder/extra/structure/set_map except items
上手くいきました! ありがとうございます
Nim1.6.14環境下で、extra/structure/set_mapをインポートすると、sequtilのtoSeqが上手く動かなくなるようです。 例えば下記のコードをAtCoderのコードテストに投げると再現可能です。
ambiguous call; both iterators.items(s: Slice[items.T]) [iterator declared in C:\Users\una.choosenim\toolchains\nim-1.6.14\lib\system\iterators.nim(126, 10)] and set_map.items(s: Slice[items.Node]) [iterator declared in C:\Users\una.nimble\pkgs\atcoder-0.1.0\atcoder\extra\structure\binary_tree_node_utils.nim(72, 12)] match for: (HSlice[system.int, system.int])
コンパイル時にこのようなエラーが出ます。 toSeq以外でも、変数に入れたイテレータを順に見ていく系の処理全般で引っかかるようです。
これでも同じことが起きます。
詳しい原因や解決方法はわからないのですが、最新版のNimで動かすと正常な出力が得られました。 なのでAtCoderの次の言語アップデートが来れば自動的に解決するかもしれないです。