私が取り組んでいるプログラムでは、単語を含む出力配列が入力配列と同じかそれより小さい文字列操作を行っています。たとえば、入力配列には100要素が含まれ、各要素は1語(可変長)です。操作後、99要素しかありませんでした。たとえば、入力配列が500バイトであるとします。 Swiftに出力配列の長さが少なくとも500バイトであることを確認して、要素を追加するときに要素の複数の空間を持つ別の部分にそれらを移動する必要がないようにすることはできますか?配列の容量をSwiftのバイト数で定義します。
0
A
答えて
0
誤解があるかもしれません。 Array
にはあるタイプの値T
が格納され、これらの値はすべて同じサイズの です。あなたのケースでは、タイプ[String]
の配列は、struct String
の値 を保持します。これらの値は固定サイズです(Swiftの任意のタイプの値など)。
文字列は、実装の詳細で可変数の文字を保持する方法を管理します。 Swiftのソースコードを調べると、struct String
には が実際の文字列ストレージへのポインタ(コピー時に 値セマンティクスを実装するためにカウントされた参照カウント)が含まれていることがわかります。
ですから、要素が追加されたときに、配列 再配分を避けるために、要素の与えられた数のためのスペースを確保することができます
var words: [String] = []
words.reserveCapacity(100)
また場合再配分 を避けるために、文字列の基盤となるストレージのスペースを確保することができます
var word = ""
word.reserveSpace(1000)
しかし、あなたは、charの総数 を保持するために、アレイ内の容量を予約しない:文字列が拡張されその文字列要素のアクター。
関連する問題
- 1. 「大容量cnn」または「高容量アーキテクチャ」の定義は何ですか?
- 2. Swift - Intの格納容量
- 3. Swiftのバイト配列をUIImageに変換
- 4. 長い定数バイト配列の宣言
- 5. Restler関数のドキュメントで配列の型を定義します
- 6. 固定サイズのオプション配列を定義する方法[Swift 3]
- 7. char定義に必要なメモリ容量
- 8. Swiftの#define定数配列へのアクセス
- 9. オーディオ:バイト配列のサンプルの音量を変更する
- 10. 、バイトの配列でバイト
- 11. 変数を配列のキーとして定義します。
- 12. 多次元arraylistの容量を定義する
- 13. 数字へのバイト配列
- 14. 配列が変数で未定義を示しています
- 15. バイト配列でラスタデータを設定する
- 16. 配列オブジェクトの数量を配列オブジェクトでインクリメントする
- 17. 複数の未定義数量入力
- 18. Objective-Cスイッチは文字列の内容を定義します
- 19. DataNitroのユーザー定義配列の数式
- 20. SwiftのProtobufオブジェクトをバイト配列にシリアル化する方法
- 21. 数量で列を指定
- 22. NSDataからバイト配列(または整数の配列)
- 23. JSON配列へのJavascript配列、配列を返しますが、未定義の配列を入れます。
- 24. デルファイdll関数をC#からバイト配列で渡します。
- 25. バイトの配列が特定の順序
- 26. Swift 3配列内の大量のデータをソート
- 27. Swift 3のバイト配列をbleに送る方法は?
- 28. (バイト値の)文字列配列をバイト配列
- 29. 文字列の容量を増やす
- 30. は私のように定義されたバイトの配列を持つファイル
私は質問で間違いを感じましたが、可変長文字列の代わりに固定長文字が使用されています。 Woops。 – traisjames
@traisjames:あなたは今、さまざまなものを混ぜていると思います。この配列は、固定長構造体である 'String'型の要素を格納します。各 'String'は、(不透明な)バッファを使用して、(多分可変の)文字数を保持します。それは総文字数のための容量を必要とする配列ではありません。 –
@Martain R:ああ、文字列のメモリフットプリントは、格納されている文字数に制限されていませんか? – traisjames