1. ホーム
  2. c++

[解決済み] vector<bool> の代替となるもの

2023-01-25 02:58:29

質問

(願わくば)皆が知っているように vector<bool> は完全に壊れており、C の配列として扱うことはできません。この機能を得るための最良の方法は何でしょうか? 今のところ、私が思いついたアイデアは

  • を使用する。 vector<char> を使うか、あるいは
  • ラッパークラスを使用し vector<bool_wrapper>

皆さんはこの問題をどのように処理していますか?私は c_array() の機能が必要です。

余談ですが、もし私が c_array() メソッドが必要ない場合、ランダムアクセスが必要な場合、この問題にアプローチする最良の方法は何でしょうか?deque または他の何かを使用するべきですか?

編集してください。

  • ダイナミックサイジングは必要です。
  • 知らない人のために vector<bool> は特殊化されているので、それぞれの bool が1ビットを取るように特殊化されています。したがって、C スタイルの配列に変換することはできません。
  • wrapper"は少し語弊があるようです。私はこのようなものを考えていました。

もちろん、その場合、私は my_bool に読み込まなければなりません。

struct my_bool
{
    bool the_bool;
};
vector<my_bool> haha_i_tricked_you;

どのように解決するのですか?

使用方法 std::deque は、配列が必要ない場合は、はい。

そうでない場合は、代替の vector に特化しない bool のような ブーストコンテナ .