你知道文本編輯器中的算法和數(shù)據(jù)結(jié)構(gòu)嗎?
來自:今日頭條
來源:是不是很酷
前一陣子和一個朋友聊一個算法問題,本質(zhì)是一個高效進行字符串操作的問題,涉及的操作非常多,越聊越復(fù)雜。
最后,問題本身已經(jīng)被我們聊成了如何實現(xiàn)一個高效的文本編輯器。
這顯然是一個有現(xiàn)成解的問題。我驚訝地發(fā)現(xiàn)我上學(xué)的時候竟然沒有做過文本編輯器這樣一個工程。
一個很酷的數(shù)據(jù)結(jié)構(gòu),叫?Rope,可以作為整個文本編輯器內(nèi)部文檔字符串內(nèi)容存儲的數(shù)據(jù)結(jié)構(gòu)。

wiki 百科連接如下:
https://en.m.wikipedia.org/wiki/Rope_(data_structure)
另一個可以處理相應(yīng)問題的數(shù)據(jù)結(jié)構(gòu),叫?Gap Buffer。
維基百科鏈接:
https://en.m.wikipedia.org/wiki/Gap_buffer
這里還有一本專門介紹文本編輯的開源書籍,叫《The Craft of Text Editing》。
基本就是在講如何實現(xiàn)一個高效的文本編輯器。
雖然年代比較老,是 1999 年的書,但是如果只關(guān)注文本編輯器這么一個看似簡單的東西,里面到底都涉及什么問題,以及相應(yīng)的解決思路,足夠了。

除了要高效地對文本進行增刪改查,對字符串進行各種區(qū)間或者非區(qū)間的操作以外,還包括渲染,排版,和文件系統(tǒng)的 IO 交互,等等問題。
數(shù)據(jù)結(jié)構(gòu)與算法在計算機的世界中無處不在。
哪怕是文本編輯器這個看起來平凡得不能再平凡的東西:)
在線閱讀地址如下:
http://www.finseth.com/craft/
以上,便是今天的分享,覺得內(nèi)容對你有所幫助的,還請點個「在看」支持,謝謝各位啦~
推薦閱讀:
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復(fù)「1024」,即可免費獲取?。?/span>


