У меня есть class A
, который имеет атрибут std::vector<int>
.
A
должен заполнить этот вектор, когда создается экземпляр A
.
Расчет может занять некоторое время, и я хотел бы знать, если:
- это можно сделать во время компиляции.
- вектор можно также сортировать во время компиляции
Я не знаком с метапрограммированием, и на данный момент я не нашел способа сделать это. Это не вопрос, специфичный для ОС.
Вот файл A.cpp
:
#include "A.h"
#define SIZEV 100
A::A()
{
fillVector();
}
void A::fillVector()
{
// m_vector is an attribute of class "A"
// EXPECTATION 1 : fill the vector with the following calculation at compile time
const int a=5;
const int b=7;
const int c=9;
for(int i=0;i<SIZEV;i++){
for(int j=0;j<SIZEV;j++){
for(int k=0;k<SIZEV;k++){
this->m_vector.push_back(a*i+b*j+c*k);
}
}
}
// EXPECTATION 2 : sort the vector as compile time
}
std::vector<int> A::getVector() const
{
return m_vector;
}
void A::setVector(const std::vector<int> &vector)
{
m_vector = vector;
}
и main.cpp
(приложение Qt, но не имеет значения):
#include <QCoreApplication>
#include "A.h"
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
A a;
auto vec = a.getVector();
// use vec, etc ...
return app.exec();
}