字符串部分简介
字符串是啥?¶
字符串可以看作是字符序列。
字符集¶
字符集是符号和文字组成的集合,在 OI 中,处理字符串时计算复杂度往往要考虑到字符集大小带来的常数影响。
举个栗子,如果一道题只包含'A' ~ 'Z' 意味着字符集大小是 26。如果再加上 '0' ~ '9' 字符集大小就变成了 36
计算复杂度时,字符集大小带来的常数往往要用 \alpha 表示。
如何存字符串¶
可以开一个 char
数组 , 如 char a[100]
也可以用 vector
如 vector<char> v
同时 STL 中也提供了字符串容器 std :: string
另外,在 C/C++
中也可以声明字符串字面量,比如 char *buf = "XD"
。
字符串存储的位置¶
- 字符串字面量:它们的值在编译过程中已经确定,保存在可执行目标文件的
.rodata
段内。 调用objdump -s -j .rodata 文件名
可以查看.rodata
段的具体内容。 - 字符数组:局部变量保存在栈中,全局变量若初始化为非 0 值则保存在可执行目标文件的
.data
段内,若未初始化或初始化为 0 则保存在.bss
段。 string
、vector<char>
: 它们的字符元素一般存储在堆区,由 stl 调用malloc
或者new
开辟存储元素的空间。
build本页面最近更新:,更新历史
edit发现错误?想一起完善? 在 GitHub 上编辑此页!
people本页面贡献者:OI-wiki
copyright本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用