C でスタックベースのベクトルを使用するには?

Barbara Streisand
リリース: 2024-11-03 09:31:02
オリジナル
305 人が閲覧しました

How to Use a Stack-Based Vector in C  ?

スタック ストレージで STL ベクトルを使用する

問題:

C ベクトルのようなものを見つけるヒープの代わりにスタック ストレージを利用するクラスです。

解決策:

Chromium の stack_container.h は、要件に完全に適合する StackVector クラスを提供します。通常のベクトルとほぼ同じように動作しますが、スタック上にデータを割り当てます。

使用法:

  • 指定したサイズのバッファを作成します:
<code class="cpp">char buffer[4096];</code>
ログイン後にコピー
  • StackVector オブジェクトを作成します:
<code class="cpp">stack_vector<match_item> matches(buffer, sizeof(buffer));</code>
ログイン後にコピー

または、クラスによってバッファを内部的に割り当てることもできます:

<code class="cpp">stack_vector<match_item, 256> matches;</code>
ログイン後にコピー
  • アロケーターのサイズをカスタマイズします:
<code class="cpp">typedef std::pair<const char *, const char *> comp_list_item;
static const size_t comp_list_alloc_size = 128;
typedef StackAllocator<comp_list_item, comp_list_alloc_size> comp_list_alloc_type;</code>
ログイン後にコピー
  • アロケーターをインスタンス化し、ベクターを構築します:
<code class="cpp">comp_list_alloc_type::Source match_list_buffer;
comp_list_alloc_type match_list_alloc(&match_list_buffer);
comp_list_type match_list(match_list_alloc);</code>
ログイン後にコピー
  • ベクター用にメモリを予約します:
<code class="cpp">match_list.reserve(comp_list_alloc_size);</code>
ログイン後にコピー

利点:

  • STL ベクトルのドロップイン置換
  • スタック上にデータを割り当て、改善します効率
  • カスタマイズ可能なアロケーター サイズ
  • オーバーフローの場合にヒープ割り当てに自動的にフォールバックするオプション

以上がC でスタックベースのベクトルを使用するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート