2017-01-02 110 views
1

我目前正在建立/連接正在開發的程序中相當大的字符串。爲了給出一些上下文,全字符串具有終端的大小。自從我開發一個終端應用程序以來,這發生了很多。我發現數據結構爲Buffer,這似乎是將字符串與標準庫連接的最高性能方式。Ocaml緩衝區修改特定位置

如果我還經常需要更新某個特定位置緩衝區的某個部分,這是正確的選擇嗎?假設字符20到50? 在這種情況下是否有更好的方法?

+2

Gap buffers&co:https://stackoverflow.com/questions/3169440/text-editor-theory – coredump

回答

3

AFAICS,沒有辦法改變Buffer.t的內容,除了添加到最後。也許你應該看看模塊Bytes。 A Bytes.t無處不在,只有長度不能改變。但看起來你需要的長度是固定的:終端的大小(如果終端窗口調整大小,你可以用新的終端窗口代替Bytes.t)。

3

@coredump和@kne給出了很好的答案。我可能只是補充一點,在今天的世界中,一個字節是一個糟糕的字符表示。所以你可能會考慮使用一個數組或一個bigarray。

+0

爲什麼'byte'是一個糟糕的角色表示? array/bigarray有什麼優勢? – Seneca

+1

我使用的終端(都是軟件)可以顯示任何Unicode字符。所以這些字符每個都有21位表示。 array和bigarray的優點是它們可以有足夠大的元素來容納21位。 –