C ++ 11で、vector :: resizeの1つの関数から2つのバージョンに移行するのはなぜですか?

パトリック・トロポビッチ

私はクラスライブラリを開発しているので、これを求めています。(cplusplus.comで見ることができるように)C ++ 98では、std::vector::resize関数から1つのバージョンしかありませんでした:

void resize (size_type n, value_type val = value_type());

このようにして、2番目の引数を指定するかどうかに関係なく、関数が機能します。しかし、C ++ 11では、2つの異なるバージョンに変更されています。

void resize (size_type n);
void resize (size_type n, const value_type& val);

これには特別な理由がありますか?

ソンユアンヤオ

の場合std::vector::resize、C ++ 11より前でval、のデフォルト引数は常に値で初期化されており、追加された要素も値で初期化されているため、そこからコピーされます。C ++ 11以降、カスタムアロケーターを提供することでこれを回避できます。

  1. 追加のデフォルト挿入要素が追加される(以降C ++ 11)

(私の強調)

デフォルトでは、これはbyのようにplacement-newを呼び出します::new((void*)p) T()(つまり、pが指すオブジェクトをvalue-initializeします)。値の初期化が望ましくない場合、たとえば、オブジェクトが非クラスタイプであり、ゼロ化が必要ない場合は、カスタムAllocator :: constructを提供することで回避できます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++コンパイラの最適化は、ブール引数に関して2つのバージョンの関数を生成できますか?

分類Dev

C ++ 11で非メンバーの開始関数と終了関数を使用するのはなぜですか?

分類Dev

この終了関数がCの最後に2つのゼロを追加するのはなぜですか?

分類Dev

libi2c-devの2つのアーキテクチャバージョンをインストールできないのはなぜですか?

分類Dev

C ++頂点関数に2つの角かっこ[があるのはなぜですか?

分類Dev

C#UWPで1つのコンテンツに2つの変数を保持するのはなぜですか?

分類Dev

同じCプログラムの3つのバージョン、なぜ最初のバージョンはそれほど速いのですか?

分類Dev

C ++で1つのmakeコマンドを使用して、2つの異なるgccバージョンで2つの異なる実行可能ファイルをコンパイルすることは可能ですか?

分類Dev

1番目のCコードが1つの変数になり、2番目が3つの変数になるのはなぜですか。わずかな変更で最初のプログラムを機能させる方法はありますか?

分類Dev

C#でそのメンバー関数にアクセスしながら、1つのクラスのコンストラクターを呼び出さないようにするにはどうすればよいですか?

分類Dev

1つのc#azure関数セッションでIoTハブからの複数のメッセージを処理する

分類Dev

リンクリストに関するこれら2つのアプローチの違いは何ですか?C ++での1つの引数と2つの引数

分類Dev

C ++で、エスケープ文字を含むバージョンと含まないバージョンの2つのバージョンの文字列を出力するにはどうすればよいですか?

分類Dev

c#Linq:1つのテーブルから2つのカウントクエリをマージするにはどうすればよいですか?

分類Dev

jQueryに2つのバージョンがあるのはなぜですか?

分類Dev

CとC ++バージョンのコードでCRC計算が異なるのはなぜですか?

分類Dev

C ++ 11可変個引数関数の1つのバージョンを特殊化する

分類Dev

C ++ 11の「関数プロトタイプ」についての言及がいくつかあるのはなぜですか?確かにこれらはC ++には存在しません

分類Dev

C ++ 11:デフォルトのメンバー関数に「= default」を特化する必要があるのはいつですか?

分類Dev

C ++で1つの関数のすべてのオーバーロードを「エクスポート」するにはどうすればよいですか?

分類Dev

Cで1つの関数から別の関数に値を渡す

分類Dev

この3つのc ++テンプレート関数をユニバーサルリファレンスまたはstd :: forwardによって1つにマージするにはどうすればよいですか?

分類Dev

string1の複数の要素をstring2の1つの要素にマージするにはどうすればよいですか?C / C ++

分類Dev

C ++ 20のコンテナに.ssizeメンバー関数がないのはなぜですか?

分類Dev

公式のperldockerイメージに2つのバージョンのperlがあるのはなぜですか?

分類Dev

C ++:constメンバー関数から非constポインターパラメーターを受け取る外部関数にポインター値のメンバー変数を渡すことができるのはなぜですか?

分類Dev

C ++の<vector>テンプレートクラスが1つの定義ルールに違反しないのはなぜですか?

分類Dev

2つの引数の関数に対してC ++で[]演算子をオーバーロードするにはどうすればよいですか?

分類Dev

C ++ 11文字列の新しい関数(stod、stof)が文字列クラスのメンバー関数ではないのはなぜですか?

Related 関連記事

  1. 1

    C ++コンパイラの最適化は、ブール引数に関して2つのバージョンの関数を生成できますか?

  2. 2

    C ++ 11で非メンバーの開始関数と終了関数を使用するのはなぜですか?

  3. 3

    この終了関数がCの最後に2つのゼロを追加するのはなぜですか?

  4. 4

    libi2c-devの2つのアーキテクチャバージョンをインストールできないのはなぜですか?

  5. 5

    C ++頂点関数に2つの角かっこ[があるのはなぜですか?

  6. 6

    C#UWPで1つのコンテンツに2つの変数を保持するのはなぜですか?

  7. 7

    同じCプログラムの3つのバージョン、なぜ最初のバージョンはそれほど速いのですか?

  8. 8

    C ++で1つのmakeコマンドを使用して、2つの異なるgccバージョンで2つの異なる実行可能ファイルをコンパイルすることは可能ですか?

  9. 9

    1番目のCコードが1つの変数になり、2番目が3つの変数になるのはなぜですか。わずかな変更で最初のプログラムを機能させる方法はありますか?

  10. 10

    C#でそのメンバー関数にアクセスしながら、1つのクラスのコンストラクターを呼び出さないようにするにはどうすればよいですか?

  11. 11

    1つのc#azure関数セッションでIoTハブからの複数のメッセージを処理する

  12. 12

    リンクリストに関するこれら2つのアプローチの違いは何ですか?C ++での1つの引数と2つの引数

  13. 13

    C ++で、エスケープ文字を含むバージョンと含まないバージョンの2つのバージョンの文字列を出力するにはどうすればよいですか?

  14. 14

    c#Linq:1つのテーブルから2つのカウントクエリをマージするにはどうすればよいですか?

  15. 15

    jQueryに2つのバージョンがあるのはなぜですか?

  16. 16

    CとC ++バージョンのコードでCRC計算が異なるのはなぜですか?

  17. 17

    C ++ 11可変個引数関数の1つのバージョンを特殊化する

  18. 18

    C ++ 11の「関数プロトタイプ」についての言及がいくつかあるのはなぜですか?確かにこれらはC ++には存在しません

  19. 19

    C ++ 11:デフォルトのメンバー関数に「= default」を特化する必要があるのはいつですか?

  20. 20

    C ++で1つの関数のすべてのオーバーロードを「エクスポート」するにはどうすればよいですか?

  21. 21

    Cで1つの関数から別の関数に値を渡す

  22. 22

    この3つのc ++テンプレート関数をユニバーサルリファレンスまたはstd :: forwardによって1つにマージするにはどうすればよいですか?

  23. 23

    string1の複数の要素をstring2の1つの要素にマージするにはどうすればよいですか?C / C ++

  24. 24

    C ++ 20のコンテナに.ssizeメンバー関数がないのはなぜですか?

  25. 25

    公式のperldockerイメージに2つのバージョンのperlがあるのはなぜですか?

  26. 26

    C ++:constメンバー関数から非constポインターパラメーターを受け取る外部関数にポインター値のメンバー変数を渡すことができるのはなぜですか?

  27. 27

    C ++の<vector>テンプレートクラスが1つの定義ルールに違反しないのはなぜですか?

  28. 28

    2つの引数の関数に対してC ++で[]演算子をオーバーロードするにはどうすればよいですか?

  29. 29

    C ++ 11文字列の新しい関数(stod、stof)が文字列クラスのメンバー関数ではないのはなぜですか?

ホットタグ

アーカイブ