好奇字符串数据类型是否使用列表来存储其字符?如果是这样,列表实现类型是什么?
除了不可变之外,String还有像列表一样的元素和索引位置,因此想知道String是否实际上是一个列表数据结构。
答案 0 :(得分:0)
在大多数现代编程语言中,字符串是数组的包装器。例如,在.NET中,后备存储是一个16位整数数组,每个整数都包含一个UTF-16代码点。无论后备存储是什么,成员函数都提供索引等。
在C中,甚至不是字符串类型。我们称之为字符串的只是字符数组。这些数组的格式有一些规则(如空字节,\0
,终止字符串),"字符串函数"对这些数组进行操作就好像它们是字符串一样。
有些字符串处理库使用ropes来更有效地操作长字符串。
另请注意,并非所有语言都指定字符串是不可变的。在某些语言中,您可以修改字符串中的单个字符,并在不实际创建新字符串对象的情况下执行其他操作。