[解決済み] std::dynarray と std::vector の比較
質問
C++14について
std::dynarray
:
std::dynarrayは、配列の構築時に固定されたサイズを持つ配列をカプセル化するシーケンスコンテナです。 配列のサイズは構築時に固定され、オブジェクトの寿命が尽きるまで変化しません。 オブジェクトのライフタイムを通して変化しません。
std::dynarray
と同じように、実行時に割り当てる必要があります。
std::vector
.
では、どのような利点があり、どのような使い方ができるかというと
std::dynarray
を使うことができるのに対して
std::vector
の方がよりダイナミック(かつリサイズ可能)なのでは?
どのように解決するのですか?
<ブロッククオート
の利点と使い方は?
std::dynarray
を使うことができるのでしょうか?
std::vector
の方がよりダイナミック(リサイズ可能)なのでしょうか?
dynarray
よりも小さく、シンプルです。
vector
よりも小さくシンプルです。なぜなら、サイズと容量を別々に管理する必要がなく、アロケータを保存する必要もないからです。
しかし、主な性能上の利点は、実装がアロケートすることが推奨されるという事実から来ることが意図されています。
dynarray
を可能な限りスタックに割り当て、ヒープの割り当てを回避することが推奨されるという事実から来るものです。
std::dynarray<int> d(5); // can use stack memory for elements
auto p = new std::dynarray<int>(6); // must use heap memory for elements
この最適化にはコンパイラの協力が必要で、純粋なライブラリ型として実装することはできず、必要なコンパイラマジックも実装されておらず、どれだけ簡単にできるかは誰もわからない。実装経験が不足しているため、先週シカゴで開催された C++ 委員会で
std::dynarray
を C++14 から削除し、配列拡張の TS (技術仕様) 文書を別途発行して
std::experimental::dynarray
および Array of Runtime bound (ARBs, C99 VLAs に類似) を定義する TS (Technical Specification) 文書を別途発行することになりました。
std::dynarray
が C++14 に含まれないことはほぼ確実です。
関連
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] std::vector にある項目が存在するかどうかを調べるには?
-
[解決済み] std::vectorをハードコードされた要素で初期化する最も簡単な方法は何ですか?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。