2017-12-10 23 views
2

ドキュメントから、Nim配列はコンパイル時に固定長が決定され、seqは可変長であることがわかりました。Nim:配列をseqで使用する利点は?

seqsには多くの組み込みツールがあります。たとえば、sequtilsモジュールでは、mapは配列をとることができますが、とにかくseqを返します。allまたはanyは配列では機能しません。固定サイズのseqを配列に変換する簡単な方法はありません。

私の質問は、配列を使用する利点は何ですか?彼らはより速いアクセスを提供しますか?

答えて

6

Nim seqは、実際には、動的配列(seqの長さと容量の2つの単語と実際のデータからなる)へのポインタです。

seqは、別のレベルの間接化と追加のヒープ割り当てを必要とし、追加のオーバーヘッド(長さと容量、および現在使用されていない「無駄な」メモリ)を格納するために必要なメモリがあります。したがって、必要なメモリ量を正確に把握していれば、seqではなく配列を使用して時間と空間の両方を節約できます。

関連する問題