推力を使用してhost_vectorの3番目の位置に1つの値を挿入しようとしています。推力を使用してhost_vectorに挿入
static thrust::host_vector <int *> bins; int * p; bins.insert(3, 1, p);
しかし、エラーを取得しています:
error: no instance of overloaded function "thrust::host_vector<T, Alloc>::insert [with T=int *, Alloc=std::allocator<int *>]" matches the argument list argument types are: (int, int, int *) object type is: thrust::host_vector<int *, std::allocator<int *>>
は前にこれを見た誰もがあり、どのように私はこの問題を解決することができますか?私はベクトルを使って情報をGPUに渡したいと思っています。私はもともとベクトルのベクトルを使用して、異なる数のデータを保持する空間セルを表現しようとしましたが、推力では不可能であることを学びました。その代わりに、私は空間セル(最初の3つの値は最初のセルに対応し、次の2つは2番目のセルに、次の0は3番目のセルに対応するかもしれません)でソートされたデータを保持するベクトルbins
を使用しています。 。保持される値はパーティクルへのポインタであり、空間セル内のパーティクルの数を表します(ランタイム前には分かりません)。
st :: host_vector'を 'std :: vector'と組み合わせて使用すると、なぜ推力で動作するのか分かりません。最初の引数はイテレータであるはずです。したがって、 'bins.insert(3,1、p);を' bins.insert(bins.begin()+ 3、1、p)に変更すると、コンパイルする必要があります。標準的なベクター挿入物[documentation](http://www.cplusplus.com/reference/vector/vector/insert/)を勉強したいかもしれません。 –
さて、私はあなたが作業するのが難しいポインタのベクトルを見つけるだろうと思いますが、それはあなたが求めている質問ではありません。粒子へのポインタのベクトルではなく、単に粒子のベクトルを使用して、私の助言になるでしょう。 –