/ / Як додати або перевантажити функцію у вектор - c ++, оператори, перевантаження оператора

Як додати або перевантажити функцію vector - c ++, оператори, оператор-перевантаження

Я хочу трохи полегшити своє кодування, створивши оператор для свого вектора.

У мене є клас Voxelgrid:

class Voxelgrid {
struct Voxel{
float dist;
float weight;
};
vector<Voxel> grid;
int RESOLUTION;
};

Тепер річ у тому, що я хочу отримати доступ до цих Voxels і писати їх дуже багато, і я отримаю доступ до них за допомогою індексації:

grid[i + j*RESOLUTION + k*RESOLUTION*RESOLUTION].distance

наприклад.

Чи можна написати оператора, щоб я міг замість цього написати

grid(i,j,k).distance

замість цього.

Відповіді:

0 для відповіді № 1

Наприклад

class Voxelgrid
{
public:
const Voxel & operator []( std::vector<Voxel>::size_type i ) const
{
return grid[i];
}
//...
};

Або ви можете визначити функцію члена

class Voxelgrid
{
public:
const Voxel & GetVoxel( size_type i, size_type j, size_type k ) const
{
return grid[i + j*RESOLUTION + k*RESOLUTION*RESOLUTION];
}
//...
};