字符串部分简介

字符串是啥?

字符串可以看作是字符序列。

字符集

字符集是符号和文字组成的集合,在 OI 中,处理字符串时计算复杂度往往要考虑到字符集大小带来的常数影响。

举个栗子,如果一道题只包含'A' ~ 'Z' 意味着字符集大小是 26。如果再加上 '0' ~ '9' 字符集大小就变成了 36

计算复杂度时,字符集大小带来的常数往往要用 \alpha 表示。

如何存字符串

可以开一个 char 数组 , 如 char a[100]

也可以用 vectorvector<char> v

同时 STL 中也提供了字符串容器 std :: string

另外,在 C/C++ 中也可以声明字符串字面量,比如 char *buf = "XD"

字符串存储的位置

  • 字符串字面量:它们的值在编译过程中已经确定,保存在可执行目标文件的 .rodata 段内。 调用 objdump -s -j .rodata 文件名 可以查看 .rodata 段的具体内容。
  • 字符数组:局部变量保存在栈中,全局变量若初始化为非 0 值则保存在可执行目标文件的 .data 段内,若未初始化或初始化为 0 则保存在 .bss 段。
  • stringvector<char> : 它们的字符元素一般存储在堆区,由 stl 调用 malloc 或者 new 开辟存储元素的空间。

评论