i can modify only this files #ifndef OPTIMIZER_H
#define OPTIMIZER_H

#include "GroupingEvaluator.h"

#include <iostream>
#include <numeric>
#include <random>
#include <vector>

using namespace std;

namespace NGroupingChallenge
{
	class COptimizer
	{
	public:
		COptimizer(CGroupingEvaluator& cEvaluator);

		void vInitialize();
		void vRunIteration();

		vector<int>* pvGetCurrentBest() { return &v_current_best; }

	private:
		CGroupingEvaluator& c_evaluator; 
this i can not #ifndef GAUSSIAN_GROUPING_EVALUATOR_FACTORY_H
#define GAUSSIAN_GROUPING_EVALUATOR_FACTORY_H

#include "GroupingEvaluator.h"
#include "Point.h"

#include <random>
#include <vector>

using namespace std;

namespace NGroupingChallenge
{
	class CDimension
	{
	public:
		CDimension(double dMeanMin, double dMeanMax, double dStandardDeviationMin, double dStandardDeviationMax, mt19937& cRandomEngine);

		double dGenerateRandomMean();
		double dGenerateRandomStandardDeviation();

	private:
		const double d_DEFAULT_STANDARD_DEVIATION_VALUE = 1.0;

		uniform_real_distribution<double> c_mean_uniform_distribution;
		uniform_real_distribution<double> c_standard_deviation_uniform_distribution;
		mt19937& c_random_engine;
	};

	class CGaussianDistribution
	{
	public:
		CGaussianDistribution(double dMean, double dStandardDeviation, mt19937& cRandomEngine);

		double dGenerateRandomNumber();

	private:
		normal_distribution<double> c_normal_distribution;
		mt19937& c_random_engine;
	};

	class CGaussianGroupingEvaluatorFactory
	{
	public:
		CGaussianGroupingEvaluatorFactory(int iNumberOfGroups, int iNumberOfPoints);

		CGaussianGroupingEvaluatorFactory& cAddDimension(double dMeanMin, double dMeanMax, double dStandardDeviationMin, double dStandardDeviationMax);

		CGroupingEvaluator* pcCreateEvaluator();
		CGroupingEvaluator* pcCreateEvaluator(unsigned int iSeed);

	private:
		const int i_NUMBER_OF_GROUPS_MIN_VALUE = 1;
		const int i_NUMBER_OF_POINTS_MIN_VALUE = 1;

		vector<CGaussianDistribution>* pv_create_gaussian_distributions();
		vector<CPoint>* pv_create_points(vector<CGaussianDistribution>& vGaussianDistributions);

		int i_number_of_groups;
		int i_number_of_points;

		vector<CDimension> v_dimensions;
		mt19937 c_random_engine;
	};
}

#endif #ifndef GROUPING_EVALUATOR_H
#define GROUPING_EVALUATOR_H

#include "Point.h"

#include <vector>

using namespace std;

namespace NGroupingChallenge
{
	class CGroupingEvaluator
	{
	public:
		CGroupingEvaluator(int iNumberOfGroups, const vector<CPoint>& vPoints);

		double dEvaluate(const int* piSolution) const;
		double dEvaluate(const vector<int>* pvSolution) const;
		double dEvaluate(const vector<int>& vSolution) const;

		int iGetNumberOfPoints() const { return (int)v_points.size(); };

		int iGetLowerBound() const { return 1; };
		int iGetUpperBound() const { return i_number_of_groups; }

	private:
		const double d_WRONG_VALUE = -1;

		int i_number_of_groups;
		vector<CPoint> v_points;
	};
}

#endif
		double d_current_best_fitness;
		vector<int> v_current_best;

		mt19937 c_random_engine;
	};
}

#endif   #ifndef GROUPING_EVALUATOR_H
#define GROUPING_EVALUATOR_H

#include "Point.h"

#include <vector>

using namespace std;

namespace NGroupingChallenge
{
	class CGroupingEvaluator
	{
	public:
		CGroupingEvaluator(int iNumberOfGroups, const vector<CPoint>& vPoints);

		double dEvaluate(const int* piSolution) const;
		double dEvaluate(const vector<int>* pvSolution) const;
		double dEvaluate(const vector<int>& vSolution) const;

		int iGetNumberOfPoints() const { return (int)v_points.size(); };

		int iGetLowerBound() const { return 1; };
		int iGetUpperBound() const { return i_number_of_groups; }

	private:
		const double d_WRONG_VALUE = -1;

		int i_number_of_groups;
		vector<CPoint> v_points;
	};
}

#endif   #ifndef POINT_H
#define POINT_H

#include <cmath>
#include <vector>

using namespace std;

namespace NGroupingChallenge
{
	class CPoint
	{
	public:
		void vAddCoordinate(double dCoordinate);
		double dCalculateDistance(const CPoint& cOther) const;

	private:
		const double d_WRONG_DISTANCE_VALUE = -1;

		vector<double> v_coordinates;
	};
}

#endif what can i use to get vector of points in my optimizer