質問
私は現在、スラストライブラリを使用しようとしていますが、返品タイプに問題があります。
device_vector<int> input(5);
input[0] = 0;
input[1] = 2;
input[2] = 5;
input[3] = 7;
input[4] = 8;
pair<int*, int*> result= minmax_element(input.begin(), input.end());
エラーを与えます:
error : no suitable conversion function from "const thrust::detail::normal_iterator<thrust::device_ptr<int>>" to "int *" exists
誰かが私に、返品タイプがどうあるべきかを考えてみてください。
による ドキュメンテーション 返品タイプはです
thrust::pair<ForwardIterator,ForwardIterator>
しかし、これは私のためには機能していませんが、誰かが説明していただけませんか!
ありがとう!
解決
テンプレートパラメーターに名前を付けるとき、 ForwardIterator
特定のタイプに名前を付けません。私たちの目的のために、私たちはそれをに与えられた繰り返しのタイプのプレースホルダーと考えることができます thrust::minmax_element
:
template<typename ForwardIterator>
thrust::pair<ForwardIterator,ForwardIterator> minmax_element(ForwardIterator first, ForwardIterator last);
そう minmax_element
返品a pair
どんな種類のタイプの反復剤が議論として与えられています。
あなたの場合、 minmax_element
返品a pair
の device_vector<int>::iterator
s。コードを作成してコンパイルすることができます result
適切な pair
:
device_vector<int> input(5);
input[0] = 0;
input[1] = 2;
input[2] = 5;
input[3] = 7;
input[4] = 8;
// we can use a typedef for brevity
typedef pair<device_vector<int>::iterator, device_vector<int>::iterator> result_type;
result_type result = minmax_element(input.begin(), input.end());
// check the results
assert(0 == *result.first);
assert(8 == *result.second);
所属していません StackOverflow