Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++RAD Studio

C++Builderで高いパフォーマンスを実現するC++17 string_viewの使用方法を学ぶ

achieve-high-performance-by-using-c17-feature-string_viev

このブログでは、文字列を扱うための最新の C++17 機能(string_view)を学びます。

C++言語の文字列クラスといえばstd::stringがありますが、動的にメモリを確保するため、クラスの構築や変更操作にコストがかかります。また部分文字列を取る場合には文字列のコピーが発生するため、余計なオーバーヘッドがかかります。もし高速化のために不要な処理を避けたい場合は、std::stringのメンバー関数の恩恵が受けられず、独自コードを書かなければならないケースも少なくありません。

C++17では、低いコストで文字列の構築や変更操作が可能なstd::string_view型が導入されました。

std::string_viewは、文字列の所有権を保持せず、文字列のコピーを持つのではなく参照をして、参照先の文字列を加工して扱います。

つまりstd::string_viewは、参照先の文字列の開始位置のポインタと長さを保持しており、文字列のコピーをすることなく文字列を参照できるため、std::stringのように動的なメモリ確保を必要とせず、余計なコピーも発生しないため、低いコストで文字列を扱うことができます。

C++Builderでstd::string_viewを使用するには?

  • string_view は <string_view> ヘッダファイルに存在します。

std::string_viewのメリットは?

  • std::string_viewは、不要な重複を避けたい場合に便利
  • リテラルからstd::string_viewを作成する場合、動的なメモリ確保は不要

実際のコード例を見てみましょう。

上記のコードでは、std::string_viewが不要なメモリ確保を制限することによって、メモリ節約を行なっています。std::string_viewは、素晴らしいパフォーマンスを発揮するための並外れたユーティリティですが、プログラマーはstd :: string_viewが参照している文字列よりも寿命が長続きしないことを保証する必要があります。

std::string_viewをもっと詳しく知りたい方は、公式のドキュメントを参考ください。また、このブログで紹介しましたサンプルコードは、こちらからダウンロードできます。

C++Builder 10.4では、最新のC++17の言語仕様をサポートしており、C++17の新機能もすぐに試せます。製品の詳細は、こちらを参照してください。


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

関連記事
C++RAD Studio事例

大規模なC++プロジェクトのビルド時間をTwineCompileで高速化

C++RAD Studio

C++BuilderでC++17 構造化束縛(Structured Bindings)の使用方法を学ぶ

C++RAD Studio

C++Builderで最新C++ constexprの使用方法を学ぶ

C++RAD Studio

C++Builderで戻り値の型推論(auto)の使用方法を学ぶ

コメント

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES