問題タブ [stdarray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - std::array vs C-array vs std:vector
私は自分のプログラムでに置き換えるstd::vector
と思ったstd::array
ので、テストを続けました:
まあ、出力は十分に奇妙です - はstd::array
C アレイよりも 3 倍遅く、 よりもさらに遅いですvector
。最適化は適用されませんでした。唯一のフラグは-std=c++11
です。何が間違っている可能性がありますか?
c++ - 実行時に計算されたサイズで std::array を作成する
のオブジェクトを作成したいのですstd::array<T, N>
が、問題は、型を返す関数しか使用できないconstexpr
か、コンパイラが文句を言うことです。ここでの問題は、次のような別の配列のサイズに基づいて、この配列の長さを計算する必要があることです。
この関数の出力を変換して、代わりに使用できるようにするにはどうすればよいN
ですか?
c++ - std::pairs の std::array をブレースで初期化するにはどうすればよいですか?
VS2013 エラー:
error C2440: 'initializing' : 'int' から 'std::pair' に変換できません コンストラクターがソース型を取得できないか、コンストラクターのオーバーロードの解決があいまいです '
私は何を間違っていますか?
c++ - std::array を使用してツリーを作成する
下部のコードは、次のコンパイル時エラーを生成します。std::vector<Node>
またはを使用すると、エラーはなくなりますstd::array<unique_ptr<Node>, 3>
。誰かがこれが何であるか説明してもらえますか?
main.cpp:1:0 からインクルードされたファイル: /usr/include/c++/4.9/array: 「struct std::array」のインスタンス化: main.cpp:9:23:
ここから必要 /usr/include/ c++/4.9/array:97:56: エラー: 'std::array<_Tp, _Nm>::_M_elems' には不完全な型 typename _AT_Type::_Type _M_elems があります。^ main.cpp:3:7: エラー: 'class Node' クラス Node の前方宣言
c++ - 生の配列には std::array よりも利点がありますか?
生の配列と std::vectorに関するこの質問に対する受け入れられた回答によると、生の配列の利点 (2010 年) は次のとおりです。
- 配列はわずかにコンパクトです: サイズは暗黙的です
- 配列はサイズ変更できません。時にはこれが望ましい
- 配列は余分な STL ヘッダーを解析する必要はありません (コンパイル時)
- 配列を使用してストレート C コードとやり取りする方が簡単な場合があります (たとえば、C が割り当てており、C++ が使用している場合)。
- 固定サイズの配列は、構造体またはオブジェクトに直接埋め込むことができます。これにより、メモリの局所性が向上し、必要なヒープ割り当ての数を減らすことができます
私の知る限りでは、std::array は 3 番目のポイントを除くすべてに対応しています。
コンパイル時間をどうしても改善する必要がない限り、C++11 で std::array よりも raw 配列を使用する理由はありますか?
c++11 - const & を constexpr 関数のパラメーターとして使用できますか?
CArray T(&)(N)
a 、 aのいずれかを取る constrexpr 関数を作成していますstd::array
。私は2つの関数を書かなければならないと思います(あなたがもっとよく知っているなら、私は喜んで知りたいです)、
しかし、std::array で書いた内容が気になります
const & または not で渡す constrexpr 関数を作成するときは正しいですか?
コンパイル時にコンパイラがコピーをインスタンス化し、コンパイル時に L 値の概念がないため、そうあるべきだと思います。
誰かが私にこれを説明できますか?
c++ - 「デフォルトで構築された配列が空でないことを除いて」とはどういう意味ですか?
N3337 で、§23.3.2.1/3 を読んでいます。
An
array
は、コンテナーと可逆コンテナー (23.2) のすべての要件を満たしますarray
。
§23.2.1 の表 96 コンテナ要件ではX u;
、事後条件が であるデフォルトの構築済みオブジェクトを示していますu.empty()
。おそらく、次のようになります。
をa.empty()
出力する必要1
があります。では、ここで「空」とはどういう意味ですか?