問題タブ [array-view]
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.
c++ - メモリセーフな方法で、指定されたベクトルのサイズを使用して 2D 配列を作成する C++
次のことを達成するにはどうすればよいですか。
まず、できることはわかっていnew
ますが、後で削除することを忘れないでください。可能であれば、メモリの割り当て解除を処理する必要はありません。
第 2 に、スタック上で 2D 配列を宣言できません。これは、N が定数式ではない (この場合はできない) ためです。(いずれにせよ、私は VS2013 を使用しており、サポートしていませんconstexpr
。)
std::array
第三に、明らかに「ローカル変数は非型引数として使用できない」ため、使用できません(または使用方法がわからない可能性があります)。(VS2013 コンパイル ダイアログからこれをコピーして貼り付けましたが、この点についてはほとんど理解していません)。
第四に、私は を使用することを考えてunique_ptr
います。unique_ptr
問題は、のような 1D 配列の使用方法は知ってstd::unique_ptr<int> arr{ new int[N] }
いますが、2D 配列の使用方法がわかりません。
最後に、常にヒープ上に作成される C スタイルの配列の周りに独自のシン ラッパーを記述したり、独自の 2D 配列クラスを記述したりできることを知っています。しかし、C++ (C++11) でこれを行うネイティブまたは標準ライブラリの方法はありますか?
c++ - c++ の vector の int[] + k と同等
アルゴリズムがあり、コードを変換したいので、配列を使用する代わりにベクトルを使用したいと考えています。
これをどのように翻訳しますか: (b + j と a の側)
どこ
の中へ
同等である必要があるため、このような呼び出しは、配列を使用しているかのように同じ値を返します。
c++ - Interpret a std::string as a std::vector of char_type?
I have a template<typename T>
function that takes a const vector<T>&
. In said function, I have vectors cbegin()
, cend()
, size()
, and operator[]
.
As far as I understand it, both string
and vector
use contiguous space, so I was wondering if I could reuse the function for both data types in an elegant manner.
Can a std::string
be reinterpreted as a std::vector
of (the appropriate) char_type? If so, what would the limitations be?
c++ - array_view を使用したポインター演算
Herb Sutter の "Writing Good C++14... By Default" ( https://www.youtube.com/watch?v=hEx5DNLWGgA ) の最初の部分を見たところですが、(愚かな可能性がある) 質問があります。 array_viewについて。
提示されたケースは、ポインター演算を避けるためにポインターと長さの代わりに array_view を送信していましたが、array_view は次のようなケースをどのように処理できますか。
array_view はこの種のものをサポートしていますか、それともユースケースが間違っていますか?
c++ - マップ、セットなどの array_view 代替
virtual
コンテナ参照を返す関数がいくつかあるクラス階層があるとします。
現時点では、クラスの任意のサブクラスで実際にvector
、set
、またはを返すことしかできません。ただし、一部については、たとえば aを使用して、この制限を緩和できます。map
Interface
vector
gsl::array_view
問題は、array_view
他のコンテナ タイプで使用するための代替手段があるかどうかです。基本的に私が欲しいのは、特定のコンテナー タイプを指定せずに、不変ビューとして機能する関数から返すことができる軽量オブジェクトだけです。std::set
a を のようなものに押し込むことも理にかなっていますarray_view
が、サポートされている操作は少なくなります (たとえば、ランダムアクセスはありません)。map
は明らかに別の獣であり、別のview
サポートする連想ルックアップが必要map
になりますが、array_view<const std::pair<const int, int>>
. 求めすぎですか?それとも、これを実装するための合理的な方法がありますか? それとも、そのような「ビュー」の既存の実装さえあるのでしょうか?
PS: 継承は前提条件ではありません。問題を提示する最も簡単な方法だと思いました。
c++ - gsl::array_view> std::vector から
クラスにメンバー変数std::vector<std::string>
があり、 と の組み合わせを使用して、メンバー関数から不変ビューとしてそれを返したいとしgsl::array_view
ますgsl::cstring_view
。残念ながら、以下はコンパイルされません。
cstring_view
これは、array_view
を作成できるコンテナーがないためです。だから私の質問は: type のメンバーのようなものを明示的に追加せずにそのような構造を使用する方法はありstd::vector<gsl::cstring_view<>>
ますか?これは明らかに望ましくありませんか?
編集
そのような「変換」ビューは、より一般的に使用できるように思えます。実装定義のストレージ アプローチを公開せずに、生のポインターとしてクラスのユーザーに公開したいvector
などの所有ポインターを持つことを検討してください。考え?std::vector<std::shared_ptr<T>>
array_view
gsl::array_view<const T*>
c++ - gsl ライブラリの span と array_view の違いは何ですか?
最近のいくつかのカンファレンス プレゼンテーションで、Bjarne Stroustrup や他の人が、C++ とそれをサポートするいくつかのタイプの新しいコーディング ガイドラインについて言及しているのを耳にしました。
具体的には、関数へのパラメーターとしての代わりにの例span<T>
(T* p, int n)
を覚えています(話の 32:00 頃の時間)。を使用するという提案も覚えていますarray_view<T>
。それらは2つの選択肢ですが、同じ概念ですか? それとも、私は物事を混乱させていて、実際にはそれほど関連していませんか?
私は、両者が何についてであるべきかについての権威ある定義を見つけることができないようです.