Определяемое пользователем уменьшение вектора различного размера

Я пытаюсь определить собственное сокращение для векторов комплекса <float>, следуяэтот ответ на вопросСокращение по массиву в OpenMP.

Но размер моих векторов не фиксирован во время компиляции, поэтому я не уверен, как определить инициализатор для вектора вdeclare reduction Прагма. То есть я не могу просто иметь

initializer( omp_priv=TComplexVector(10,0) )

Но инициализатор нужен для векторов.

Как я могу передать предложению инициализатора размер вектора, который мне нужен во время выполнения? То, что у меня есть, ниже:

typedef std::vector<complex<float>> TCmplxVec;

void ComplexAdd(TCmplxVec & x,TCmplxVec & y){
  for (int i=0;i<x.size();i++) 
  {
      x.real()+= y.real();
      //... same for imaginary part and other operations
  }

}

#pragma omp declare reduction(AddCmplx: TCmplxVec: \
ComplexAdd(&omp_out, &omp_in)) initializer( \
omp_priv={TCmplxVec(**here I want a variable length**,0} )

void DoSomeOperation ()
{
    //TCmplxVec vec is empty and anotherVec not

    //so each thread runs the inner loop serially
  #pragma omp parallel for reduction(AddCmplx: vec) 
  for ( n=0 ; n<10 ; ++n )
    {
      for (m=0; m<=someLength; ++m){
        vec[m] += anotherVec[m+someOffset dependend on n and else];
      }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос