私はベクトルを使って動的プログラミングプログラムを実装するためのテーブルを作成しています。しかし、なぜ不変ベクトルのためにvector-set
がないのですか?可変ベクトルの場合はvector-set!
しかありませんが、不変および変更可能な辞書の場合はdict-set
とdict-set!
、さらに不変および変更可能なハッシュテーブルの場合はhash-set
とhash-set!
です。不変ベクトルの更新要素
1
A
答えて
2
vector-set
が見つからない理由は、操作を実現せずに誤って使用している人がO(n)
であり、O(1)
でないことを防ぐためです。 vector-set!
はO(1)
なので、誰かが間違いを犯す可能性は低いです。
はさらに、それが本当に必要なときvector-set
を書くことは簡単です:
#lang racket
(define (vector-set v i o)
(vector->immutable-vector
(for/vector ([j (in-range (vector-length v))])
(if (= i j)
o
(vector-ref v j)))))
(vector-set (vector-immutable 10 11 12 13) 2 'a)
は出力:
'#(10 11 a 13)
+0
答えをありがとう! – fluter
関連する問題
- 1. ベクトル要素の値を変更する
- 2. ポインタを介してベクトルの要素を更新する
- 3. 更新要素
- 4. 不変のベクトルの不変のサブベクトル
- 5. 要素がベクトル
- 6. 変更可能なベクトルと不変のベクトル演算の最適化
- 7. 要素を変更した後にhtml要素を更新する方法
- 8. jQueryの更新フォーム要素
- 9. HTML内の要素スタイルの変更/更新
- 10. NoUisliderブロック要素の不透明度を変更
- 11. 私は要素のベクトルを持つベクトル
- 12. 要素プロパティの変更後にアイアンリストが更新されない
- 13. 変更HTML要素
- 14. 変更ルート要素
- 15. クラス要素をインタフェース要素に変更
- 16. 不要なmysql列の更新
- 17. R:ベクトルの番号要素
- 18. ベクトル要素IDのC++
- 19. 要素ごとのベクトル化
- 20. のiframe内の内容を変更したり削除不要な要素
- 21. d3 +バックボーン:データが変更された要素を更新する
- 22. 更新クエリの不必要な更新を避ける
- 23. 論理条件に基づいた因子ベクトルの要素の変更R
- 24. 要素のサイズ変更
- 25. ベクトルが要素を変更しないのはなぜですか?
- 26. 不明な要素と不明な要素との一致
- 27. AngularJS - HTML要素のスコープを新しいスコープに変更する
- 28. MySQLの更新と最初の要素
- 29. MonoTouch.Dialog:要素内のテキストの更新
- 30. Rベクトルを1要素の文字列ベクトルに変換します
そうだね、何の機能 'ベクトル-set'操作でそこに構築されていません。しかし、これを直接サポートする永続的なベクトルを提供するライブラリがあります。たとえば、[pvector](http://docs.racket-lang.org/pvector/index.html)ライブラリは、[set-nth](http://docs.racket-lang.org/collections/collections- api.html#%28def ._%28%28lib._data%2Fcollection..rkt%29._set-nth%29%29)と[update-nth](http://docs.racket-lang.org/collections /collections-api.html#%28def._%28%28lib._data%2Fcollection..rkt%29._update-nth%29%29)機能の更新を行います。 –
@AlexKnauthはい、pvectorに感謝しますが、なぜですか?その理由は「ベクトルセット」を持つことができなかった。 – fluter
'pvector'ライブラリは、それがどのように構造化されているかによって、ベクトル全体をコピーして機能的に更新する必要はありません。しかし組み込みのベクトルはその構造を持たないので、組み込みのベクトル*上の関数 'ベクトル集合 'は全体をコピーする必要があります。それはなぜ除外されたのかの一部かもしれませんが、わかりません。 –