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

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

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) でこれを行うネイティブまたは標準ライブラリの方法はありますか?

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

c++ - c++ の vector の int[] + k と同等

アルゴリズムがあり、コードを変換したいので、配列を使用する代わりにベクトルを使用したいと考えています。

これをどのように翻訳しますか: (b + j と a の側)

どこ

の中へ

同等である必要があるため、このような呼び出しは、配列を使用しているかのように同じ値を返します。

0 投票する
7 に答える
635 参照

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?

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

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 はこの種のものをサポートしていますか、それともユースケースが間違っていますか?

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

c++ - マップ、セットなどの array_view 代替

virtualコンテナ参照を返す関数がいくつかあるクラス階層があるとします。

現時点では、クラスの任意のサブクラスで実際にvectorset、またはを返すことしかできません。ただし、一部については、たとえば aを使用して、この制限を緩和できます。mapInterfacevectorgsl::array_view

問題は、array_view他のコンテナ タイプで使用するための代替手段があるかどうかです。基本的に私が欲しいのは、特定のコンテナー タイプを指定せずに、不変ビューとして機能する関数から返すことができる軽量オブジェクトだけです。std::seta を のようなものに押し込むことも理にかなっていますarray_viewが、サポートされている操作は少なくなります (たとえば、ランダムアクセスはありません)。mapは明らかに別の獣であり、別のviewサポートする連想ルックアップが必要mapになりますが、array_view<const std::pair<const int, int>>. 求めすぎですか?それとも、これを実装するための合理的な方法がありますか? それとも、そのような「ビュー」の既存の実装さえあるのでしょうか?

PS: 継承は前提条件ではありません。問題を提示する最も簡単な方法だと思いました。

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

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_viewgsl::array_view<const T*>

0 投票する
3 に答える
29879 参照

c++ - gsl ライブラリの span と array_view の違いは何ですか?

最近のいくつかのカンファレンス プレゼンテーションで、Bjarne Stroustrup や他の人が、C++ とそれをサポートするいくつかのタイプの新しいコーディング ガイドラインについて言及しているのを耳にしました。

具体的には、関数へのパラメーターとしての代わりにの例span<T>(T* p, int n)を覚えています(話の 32:00 頃の時間)。を使用するという提案も覚えていますarray_view<T>。それらは2つの選択肢ですが、同じ概念ですか? それとも、私は物事を混乱させていて、実際にはそれほど関連していませんか?

私は、両者が何についてであるべきかについての権威ある定義を見つけることができないようです.