問題タブ [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.

0 投票する
1 に答える
335 参照

arrays - std::array vs C-array vs std:vector

私は自分のプログラムでに置き換えるstd::vectorと思ったstd::arrayので、テストを続けました:

まあ、出力は十分に奇妙です - はstd::arrayC アレイよりも 3 倍遅く、 よりもさらに遅いですvector。最適化は適用されませんでした。唯一のフラグは-std=c++11です。何が間違っている可能性がありますか?

0 投票する
1 に答える
5938 参照

c++ - 実行時に計算されたサイズで std::array を作成する

のオブジェクトを作成したいのですstd::array<T, N>が、問題は、型を返す関数しか使用できないconstexprか、コンパイラが文句を言うことです。ここでの問題は、次のような別の配列のサイズに基づいて、この配列の長さを計算する必要があることです。

この関数の出力を変換して、代わりに使用できるようにするにはどうすればよいNですか?

0 投票する
2 に答える
13776 参照

c++ - std::pairs の std::array をブレースで初期化するにはどうすればよいですか?

VS2013 エラー:

error C2440: 'initializing' : 'int' から 'std::pair' に変換できません コンストラクターがソース型を取得できないか、コンストラクターのオーバーロードの解決があいまいです '

私は何を間違っていますか?

0 投票する
4 に答える
790 参照

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 の前方宣言

0 投票する
1 に答える
3971 参照

c++ - 生の配列には std::array よりも利点がありますか?

生の配列と std::vectorに関するこの質問に対する受け入れられた回答によると、生の配列の利点 (2010 年) は次のとおりです。

  • 配列はわずかにコンパクトです: サイズは暗黙的です
  • 配列はサイズ変更できません。時にはこれが望ましい
  • 配列は余分な STL ヘッダーを解析する必要はありません (コンパイル時)
  • 配列を使用してストレート C コードとやり取りする方が簡単な場合があります (たとえば、C が割り当てており、C++ が使用している場合)。
  • 固定サイズの配列は、構造体またはオブジェクトに直接埋め込むことができます。これにより、メモリの局所性が向上し、必要なヒープ割り当ての数を減らすことができます

私の知る限りでは、std::array は 3 番目のポイントを除くすべてに対応しています。

コンパイル時間をどうしても改善する必要がない限り、C++11 で std::array よりも raw 配列を使用する理由はありますか?

0 投票する
1 に答える
405 参照

c++11 - const & を constexpr 関数のパラメーターとして使用できますか?

CArray T(&)(N)a 、 aのいずれかを取る constrexpr 関数を作成していますstd::array。私は2つの関数を書かなければならないと思います(あなたがもっとよく知っているなら、私は喜んで知りたいです)、

しかし、std::array で書いた内容が気になります

const & または not で渡す constrexpr 関数を作成するときは正しいですか?

コンパイル時にコンパイラがコピーをインスタンス化し、コンパイル時に L 値の概念がないため、そうあるべきだと思います。

誰かが私にこれを説明できますか?

0 投票する
1 に答える
144 参照

c++ - 「デフォルトで構築された配列が空でないことを除いて」とはどういう意味ですか?

N3337 で、§23.3.2.1/3 を読んでいます。

Anarrayは、コンテナーと可逆コンテナー (23.2) のすべての要件を満たしますarray

§23.2.1 の表 96 コンテナ要件ではX u;、事後条件が であるデフォルトの構築済みオブジェクトを示していますu.empty()。おそらく、次のようになります。

a.empty()出力する必要1があります。では、ここで「空」とはどういう意味ですか?