今天想到一个问题,字符串应该是一种虽然常用,但比我们想象的更复杂的数据结构。比如新人初学 C++时应该都会有 input 一个什么东西然后看 output 的教学。但是实际上字符串首先是可变长的,意味着没法在编译时固定长度,第二是它展示的是高层信息,比如中文字符串底层(假设按照 utf-8 存储)显然并不能直接阅读,如果考虑 utf-8 的问题的话它还涉及变长问题,也就是不能认为每个字符的物理信息就是 1byte ,因为实际上可能在 1-4 之间不一定是多少,如果考虑世界上不同语言,中东似乎还有从右往左的语言,这在一些特定环境下应该也会需要额外的代码处理。。
所以平常很长用的字符串切片操作,比如对一个字符串,slice 第 10 到第 20 个字组成的子串,各语言是如何做到高效定位该从哪里开始从哪里结束的?比如我有一个四百万字的字符串,需要 slice 第三百九十九万字以后的内容, 要确定第 399 万个字从哪里开始岂不是需要从 0 开始遍历才能准确定位,这样一来效率岂不会很低吗?实际日常使用似乎并没有类似的感觉,有哪些优化吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.