問題タブ [vector]

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 投票する
11 に答える
416570 参照

r - ベクトルの最後の値にアクセスするにはどうすればよいですか?

1つまたは2つのレベルのデータフレームにネストされたベクトルがあるとします。関数を使用せずに最後の値にアクセスするための迅速で汚い方法はありlength()ますか?何かアラPERLの$#特別な変数?

だから私は次のようなものが欲しいです:

それ以外の

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

.net - C++/CLI で std::vector<>::iterator を .NET インターフェイスに変換する

次のメソッドを持つネイティブ C++ クラスをラップしています。

1) この同じ種類のインターフェイスを表す ".NET の方法" は何ですか? 配列を返す単一のメソッド<>? array<> ジェネリックには反復子があるので、BeginLocals() と EndLocals() を実装できますか?

2) Localは .NET ラッパーで値構造体として宣言する必要がありますか?

ラップされたクラスを .NET フレーバーで表現したいのですが、管理された世界に慣れていないので、この種の情報をグーグルで検索するのはイライラします...

0 投票する
9 に答える
2278 参照

c++ - ベクトルをマージするためのアルゴリズムのヘルプ

次のタスクには非常に高速なアルゴリズムが必要です。私はすでにそれを完成させるいくつかのアルゴリズムを実装していますが、それらはすべて私が必要とするパフォーマンスに対して遅すぎます. 最新の CPU でアルゴリズムを少なくとも 1 秒間に 100,000 回実行できるほど高速である必要があります。C++ で実装されます。

線上に開始座標と終了座標を持つ構造であるスパン/範囲を使用しています。

スパンの 2 つのベクトル (動的配列) があり、それらをマージする必要があります。1 つのベクトルは src で、もう 1 つのベクトルは dst です。ベクトルはスパン開始座標でソートされ、スパンは 1 つのベクトル内でオーバーラップしません。

src ベクトルのスパンは dst ベクトルのスパンとマージする必要があります。これにより、結果のベクトルがソートされ、オーバーラップがなくなります。すなわち。マージ中にオーバーラップが検出された場合、2 つのスパンが 1 つにマージされます。(2 つのスパンのマージは、構造内の座標を変更するだけの問題です。)

ここで、もう 1 つ問題があります。マージ中に src ベクトルのスパンを「拡張」する必要があります。これは、src 内のすべてのスパンの開始座標に定数が追加され、別の (より大きな) 定数が終了座標に追加されることを意味します。これは、src スパンが拡張された後にオーバーラップする可能性があることを意味します。


私がこれまでに到達したことは、完全にその場で行うことはできず、何らかの一時的な保管が必要であるということです. 合計された src と dst の要素数に対して線形時間で実行できるはずだと思います。

一時ストレージは、おそらくアルゴリズムの複数の実行間で共有できます。

私が試した 2 つの主なアプローチは遅すぎますが、次のとおりです。

  1. src のすべての要素を dst に追加し、追加する前に各要素を拡張します。次に、インプレース ソートを実行します。最後に、「読み取り」および「書き込み」ポインターを使用して結果のベクターを反復処理します。読み取りポインターは書き込みポインターの前に実行され、スパンが進むにつれてマージされます。すべての要素がマージされると (読み取りポインターが end に達すると)、dst は切り捨てられます。

  2. 一時的な作業ベクトルを作成します。src または dst から次の要素を繰り返し選択し、work-vector にマージすることにより、上記の単純なマージを実行します。完了したら、work-vector を dst にコピーして置き換えます。

最初の方法には、ソートが O(m+n) ではなく O((m+n)*log(m+n)) であり、多少のオーバーヘッドがあるという問題があります。また、dst ベクトルが実際に必要とするよりもはるかに大きくなる必要があることも意味します。

2番目には、大量のコピーとメモリの割り当て/割り当て解除という主な問題があります。

スパン/ベクターの保存/管理に使用されるデータ構造は、必要に応じて変更できます。

更新: データセットの大きさを言い忘れました。最も一般的なケースは、いずれかのベクトルの要素が 4 ~ 30 で、dst が空であるか、src と dst のスパン間に大量の重複があります。

0 投票する
16 に答える
29981 参照

c++ - 初期化されていないストレージを含む STL ベクトル?

struct連続したストレージに sを配置する必要がある内部ループを作成しています。structこれらの s がいくつになるかは、事前にわかりません。私の問題は、STL がvectorその値を 0 に初期化することです。そのため、何をしても、初期化のコストと、structのメンバーを値に設定するコストが発生します。

初期化を防ぐ方法はありますか、またはサイズ変更可能な連続したストレージと初期化されていない要素を備えた STL のようなコンテナーがありますか?

(コードのこの部分は最適化する必要があると確信しており、初期化にはかなりのコストがかかると確信しています。)

また、初期化がいつ行われるかについての説明については、以下の私のコメントを参照してください。

いくつかのコード:

0 投票する
9 に答える
8630 参照

c++ - ベクトルを取得するベクトルを期待する関数に

これらのクラスを検討してください。

この機能

そして最後に私のベクトル

derivedfunctionに渡したいのですBaseFooが、コンパイラが許可しません。ベクトル全体を a にコピーせずに、これを解決するにはどうすればよいstd::vector<Base*>ですか?

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

c++ - イテレータを使用してベクトルへのインデックスを取得する

ベクトルの要素を反復処理するときは、インデックスの代わりに反復子を使用することをお勧めします (配列インデックスの代わりに反復子を使用する理由を参照してください)。

ただし、ループの本体でインデックスを使用する必要がある場合があります。その場合、パフォーマンスと柔軟性/拡張性を考慮して、次のうちどれが望ましいでしょうか?

  1. インデックス付きループに戻る/li>
  2. オフセットを計算する/li>
  3. std::distance を使用する/li>
0 投票する
3 に答える
417 参照

arrays - クラス内のベクトルの問題

クラス内にこのコードがあります:

したがって、このエラーが発生します:無効な型 `int[int]' for array subscript

何が問題なの? わかりません。ありがとう。

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

c++ - 別の関数の戻り値を返す関数

Bar()の代わりに呼び出したい場合、Foo()Foo()Bar()返すもののコピー (追加のオーバーヘッド) を返しますか、それともFoo()一時スタックに配置される同じオブジェクトを返しますか?

0 投票する
5 に答える
11803 参照

opengl - Z軸をベクトルに揃える最も簡単な方法は何ですか?

(0、0、0)のような点と(x、y、z)のようなベクトルが与えられます。(0、0、0)を中心とする負のZ軸をこのベクトルの方向に向ける最も簡単な方法は何ですか?OpenGLを使用した例は歓迎されますが、必須ではありません。

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

c - 小さな C ベースのベクトルおよびマトリックス ライブラリの推奨事項

2d & 3d ベクトルと 3x3 & 4x4 行列用の軽量ライブラリが必要です。基本的なC.

助言がありますか?