Эй, в основном, я пытаюсь сохранить «решение» и создать вектор из них. У меня проблема с инициализацией. Heres мой класс для справкиИнициализация вектора пользовательского класса в C++
class Solution
{
private:
// boost::thread m_Thread;
int itt_found;
int dim;
pfn_fitness f;
double value;
std::vector<double> x;
public:
Solution(size_t size, int funcNo) : itt_found(0), x(size, 0.0), value(0.0), dim(30), f(Eval_Functions[funcNo])
{
for (int i = 1; i < (int) size; i++) {
x[i] = ((double)rand()/((double)RAND_MAX))*maxs[funcNo];
}
}
Solution() : itt_found(0), x(31, 0.0), value(0.0), dim(30), f(Eval_Functions[1])
{
for (int i = 1; i < 31; i++) {
x[i] = ((double)rand()/((double)RAND_MAX))*maxs[1];
}
}
Solution operator= (Solution S)
{
x = S.GetX();
itt_found = S.GetIttFound();
dim = S.GetDim();
f = S.GetFunc();
value = S.GetValue();
return *this;
}
void start()
{
value = f (dim, x);
}
/* plus additional getter/setter methods*/
}
Solution S(30, 1)
или Solution(2, 5)
работы и initalizes все, но мне нужно X этих объектов решений. std::vector<Solution> Parents(X)
создаст X-решения с конструктором по умолчанию, и я хочу построить с помощью конструктора (int, int). Есть ли простой (один лайнер?) Способ сделать это? Или я должен сделать что-то вроде:
size_t numparents = 10;
vector<Solution> Parents;
Parents.reserve(numparents);
for (int i = 0; i<(int)numparents; i++) {
Solution S(31, 0);
Parents.push_back(S);
}
вы можете инициализировать значение следующим образом: 'vector (size, Solution (21, 0));' для справки http://www.cplusplus.com/reference/stl/ вектор/вектор/ – Anycorn
замечательный, спасибо, что именно я хотел. – Flamewires
@aaa, должен был быть ответом ... – Kiril