char[] 与 string

关于输入输出

char[] 能用 C 风格输入输出,string 通常不行,所以使用 string 通常顺便解绑 cin,cout。

解绑后的 cin,cout 不要和 getchar 快读同时使用。

关于函数传参

char[] 传入函数中不会占用格外内存,也就是默认取地址的,在函数中更改会直接影响原串。

string 传入函数中是搞一个新的 string 来复制原串,所以每次都会单独占一个内存,但同时函数中更改不会直接影响原串,解决方法是传参的时候取地址。

关于获取长度

strlen(char[]) 的复杂度为 O(len) 的,一些时候会被坑死,所以千万不能重复调用。

string.size() 的复杂度为 O(1) 的,这是十分优秀的。

关于空间

char[] 本质是数组,string 本质是 vector,所以 string 是有动态空间的,但同时好多时候 string 需要手动扩容后才能正常用,比较典的就是如果直接调用 string 没申请到的下标会直接 RE 掉。

string 和 vector 一样可以 push_back 和 pop_back。

关于拼接

string 比较方便的一点可以直接将两个 string 拼在一起,用 + 连接,但这个复杂度和 char[] 手动接是一样的都是 O(len),但是写着方便,且常数小得多。

关于下标

两者下标都是从 0 开始,char 可以通过 +1 变成下标从 1 开始,同时长度不变;string 可以写成 " "+string,但是长度会 +1

posted @   卡布叻_周深  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示