gpt4 book ai didi

c++ - 我应该使用指向 std::string 的指针吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:32 27 4
gpt4 key购买 nike

在学习 c++ 时,我首先使用 Qt 库,而不是标准的 C++、STL 等等(好吧,所以我是 c++ 的新手,被 Qt 宠坏了)。在 Qt 上,QString 使用隐式共享,这样我就可以将它复制分配给另一个变量,例如:

QString var1=QString("Hi there!");
QString var2=var1

这会做得很好,没有太多开销。但是现在,我正在尝试 std::string 所以,我应该这样做吗

std::string var1=std::string()

std::string* var1=new std::string()

另外,QVector 和 std::vector 怎么样。如果我确实必须使用指针……有什么提示吗?

最佳答案

std::string 是否使用写时复制取决于实现(即您的标准库供应商决定)。但是,大多数 std::string 实现不会使用 COW,这主要是因为大多数(如果不是全部的话)读取操作都会强制复制——operator[] 返回一个引用, c_str()data() 返回一个指针。将其与返回代理对象的 QString::operator[] 进行比较。

尽管如此,不要使用指向 std::string 的指针,除非您确定(通过测量)字符串拷贝是应用程序中的瓶颈。

此外,请注意 QString 存储 UTF-16 字符串,而 std::string 存储一系列 char —— QByteArray 将是 Qt 的等价物。

关于c++ - 我应该使用指向 std::string 的指针吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com