Есть массивы, динамические двумерные, которые формируются в результате математических операций. Мне надо несколько массивов объединить в один и передать в функцию. Много аргументов передающихся в функцию выглядит, криворуко.
int i=10000;
double *aX = new double [i];
double *aCxmp = new double [i];
double *aCxmp1 = new double [i];
double *aCxcc = new double [i];
double *aCxcc1 = new double [i];
...
QList<QPointF> TconstSeriesZero;
QList<QPointF> TconstSeriesOne;
QList<QPointF> TconstSeriesTwo;
QList<QPointF> TconstSeriesThree;
QList<QPointF> TconstSeriesFour;
...
TconstSeriesOne.append(QPointF(aX[i],aCxcc[i]));
TconstSeriesZero.append(QPointF(aX[i],aCxmp[i]));
TconstSeriesThree.append(QPointF(aX[i],aCxcc1[i]));
TconstSeriesTwo.append(QPointF(aX[i],aCxmp1[i]));
TconstSeriesFour.append(QPointF(aX[0],aCxcc1[i]));
Как TconstSeriesOne,TconstSeriesZero,TconstSeriesThree,TconstSeriesTwo,TconstSeriesFour - эти все серии загнать в одну Tconst и передать одним массивом в функцию Chart chart.h:
#ifndef CHART_H
#define CHART_H
#include <QString>
class Chart
{
public:
Chart(QString Titel, QString abscissaX, QString ordinatusY, double xMin,double xMax,double yMin,double yMax,Tconst);
QString Titel,abscissaX,ordinatusY;
double xMin,xMax,yMin,yMax;
};
#endif // CHART_H
Как тут в самой функции достать и обработать этот большой массив Tconst, так чтоб от рисовались все графики chart.cpp:
.....
Chart::Chart(QString Titel,QString abscissaX,QString ordinatusY, double xMin,double xMax,double yMin,double yMax,Tconst)
{
...
//![4]
QLineSeries *diagramaForm6SeriesZero = new QLineSeries;
diagramaForm6SeriesZero->setName("Диаграмма 1");
diagramaForm6SeriesZero->append(Form6SeriesZero);
chart->addSeries(Tconst[0]);
diagramaForm6SeriesZero->attachAxis(axisX);
diagramaForm6SeriesZero->attachAxis(axisY);
//![4]
...
}
Для фиксированного количества списков Tconst можно определить так:
QList<QPointF> *Tconst[]={&TconstSeriesZero,&TconstSeriesOne,&TconstSeriesTwo,&TconstSeriesThree,&TconstSeriesFour};
В параметрах функции тогда он будет выглядеть так:
Chart(QString Titel, QString abscissaX, QString ordinatusY, double xMin,double xMax,double yMin,double yMax,QList<QPointF> **Tconst)
А в самой функции доступ по индексу:
chart->addSeries(*Tconst[0]);
Для std::vector<>
std::vector<QList<QPointF> *> Tconst;
Tconst.push_back(&TconstSeriesZero);
Tconst.push_back(&TconstSeriesOne);
Tconst.push_back(&TconstSeriesTwo);
Tconst.push_back(&TconstSeriesThree);
Tconst.push_back(&TconstSeriesFour);
В параметрах функции:
Chart(QString Titel, QString abscissaX, QString ordinatusY, double xMin,double xMax,double yMin,double yMax,std::vector<QList<QPointF> *> &Tconst);
В теле функции перебор массивов:
for(unsigned int i=0;i<Tconst.size();++i)
{
chart->addSeries(*Tconst[i]);
}
Можно по разному, например:
std::generate_n(Tconst, i, [aX]() { static auto ptr = ax; return *ptr++; });
std::generate_n(&Tconst[i], i, [aCxmp]() { static auto ptr = aCxmp ; return *ptr++; });
std::generate_n(&Tconst[2*i], i, [aCxmp1]() { static auto ptr = aCxmp1; return *ptr++; });
ну и т.д. Но для Tconst нужно обеспечить невыход за пределы, поэтому лучше
его сделать вектором и заносить последовательно в конец вектора
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости