-1

これが私が試していることです。関数に構造体を渡しました。関数では、構造体の値を配列に格納します。戻るときに、特定の基準に基づいて配列で定義されている値のみを送信したいと考えています。たとえば、10 の配列定義があるとします。関数で、基準に基づいてその配列から 5 つの値のみを返したいとします。サンプルコードは次のとおりです。

sc_uint<8> *arrayfill(struct){
sc_uint<8> array[10];

 array[1] = struct.a;
 array[2] = struct.b;
 ...
 if (struct.trigger == false){
  array[10] =0;
 }
 else 
 {
   array[10] = struct.j;
 }

return array;
}
4

1 に答える 1

0

関数から自動ストレージ配列を返すことはできないため、std::vector<sc_uint<8>>代わりに を返すことをお勧めします。sc_uint<8>基本的に、使いやすく移動しやすい動的配列に値をラップするだけです。

次に、基準に基づいpush_backて戻りたい値を単純に指定します。vector


例えば:

std::vector<sc_uint<8>> arrayfill(struct){
    std::vecotr<sc_uint<8>> array;
    array.reserve(10); // Reserves space for 10 elements.

    array.push_back(struct.a); // This will be the first element in array, at index 0.
    array.push_back(struct.b); // This will be the second element at index 1.
    ...
    if (struct.trigger == false){
      array.push_back(0);
    }
    else 
    {
      array.push_back(struct.j);
    }
    // At this point, array will have as many elements as push_back has been called.
    return array;
}

を使用しstd::vector::insertて値の範囲を追加します。

array.insert(array.end(), &values[3], &values[6]);

valuesいくつかの配列はどこにありますか。上記は、インデックス 3 からインデックス 5 までの値 (排他的範囲、インデックス 6 の値は挿入されません)valuesを の末尾に挿入しarrayます。

于 2015-02-09T09:01:36.377 に答える