C++字符串指针

gnm*_*gnm 2 c++

在我以前的应用程序中,我有一个这样的对象:

class myType
{
public:
 int a;
 string b;
}
Run Code Online (Sandbox Code Playgroud)

它有很多实例分散在各处,并传递给几乎所有的功能.

该应用程序很慢.分析说,95%的时间被字符串分配器功能吃掉.

我知道如何使用上面的对象,但不知道如何使用字符串指针.

class myType
{
public:
 int a;
 string* b;
}
Run Code Online (Sandbox Code Playgroud)

他们告诉我如上所述使用指针.

  • 字符串指针多快多快?
  • 复制对象时复制的内容是什么?

  • 如何使用带有指针的类:

访问字符串值

修改字符串值而不修改对象中的值(复制?)

如果我使用字符串指针会改变一般的东西?

小智 6

它实际上可能会更慢 - 你仍然需要创建和复制字符串,但现在你有动态分配的开销.我的猜测是你正在复制你的对象太多 - 每当你调用一个函数时,你的myType对象应该作为const引用传递,尽可能,而不是值:

void f( const myType & mt ) {
    // stuff
}
Run Code Online (Sandbox Code Playgroud)

如果你真的需要更改mt,你会使用非const引用 - 这比传递一个值并使用修改后的字段返回一个新值要便宜.