例として次の関数を取り上げます
string print()
{
return (some string that has been formed);
};
そして、この print 関数がとてつもなく大きな文字列を形成し、それを別のクラスから呼び出した関数に戻す必要があるとしましょう。
ここで、この印刷関数が何千回も呼び出される可能性があるとします。これを行うための正しくて速い方法はありますか?
Visual Studioではこれを行うことができます
void print(string& lines)
{
lines = (some string that has been formed);
};
ただし、g++ はこれをコンパイルしません。また、これは一時的なオブジェクトであり、いつでも消える可能性があるため、この方法で実行する必要はありません。だから私が理解していることから、私はこれを行うことができるということです
void print(const string& lines)
{
};
私が望んでいたのは、この文字列を変更せずに何かを取得し、非常に迅速に実行することだけでした。しかし、私はそれを変更したいです。だから、これは私にはできません。
これを行うには、オブジェクトへの新しいポインターを宣言するのが最速の方法になるという質問に私を導きますか? それとも遅いですか?それともそれだけの価値がないのですか?すなわち(これがうまくいくかどうかわからない?)
void print(string* lines)
{
string formedString; // the string that has been formed
lines = formedString&;
};
最後に、実行時にオブジェクトをロードし、次の方法でツリーに追加するとします。
void add(const ItemType& item)
{
someNode->item = item;
};
item
は元々、 this を呼び出す関数のスコープ内に一時的に格納されたオブジェクトでした。add()
そのため、それをノードに割り当てると、呼び出し関数のスタックが必要以上に長く滞在することになりますか? それともこれでいいでしょうか?また、後で編集できるようになりますitem
か、それとも const としてスタックしていますか?
学習心の質問です:)