В остальном код работает, но мне кажется, что мне не хватает реализации, я просто не знаю, что именно реализовать. Некоторые рекомендации, пожалуйста.
Вероятно, эффективность?
Выполнены следующие реализации:
// Функции
Resize resize ()
Назначить назначение ()
Доступ доступа ()
Move move ()
Найти get_pos ()
Копировать в 2D векторную копию ()
Копировать в 1D векторную копию ()
// Операторы
Вставка << <br>
Выписка >>
Приравнять =
// matrix.h
#pragma once
#include <iostream>
#include <cstring>
#include <vector>
#include "dimensional_size.h"
using namespace std;
#define _MATRIX_H_
template<typename type, size_t _breadth = 0, size_t _height = 0, size_t _width = 0>
class matrix {
public:
matrix();
~matrix();
void resize(size_t new_breadth, size_t new_height = 0, size_t new_width = 0);
void assign(type obj, pos z, pos y, pos x);
type access(pos z=0, pos y = 0, pos x = 0);
void move(dimensional_pos<type> old_pos, dimensional_pos<type> new_pos);
size_t get_capacity();
vector<vector<type> >& copy(vector<vector<type> > dest, pos z = 0, pos y = 0, pos dest_z = 0);
vector<type>& copy(vector<type> dest, pos z = 0, pos y = 0);
dimensional_pos<type> get_loc(type& t);
void operator<<(type t);
void operator>>(type t);
matrix<type, _breadth, _width, _height> operator=(matrix<type, _breadth, _height, _width> obj);
private:
dimensional_size<_breadth, _height, _width> size_obj;
vector<vector<vector<type> > > dat;
};
// dimensional_size.h
dimension_size.h предоставляет структуру данных «dimension_size» и класс «dimension_pos» с определением типа «pos» как длинное целое число без знака
#pragma once
#include <iostream>
#include <stdarg.h>
#include <vector>
#define _DIMENSIONAL_SIZE_H_
using namespace std;
template<size_t z, size_t y, size_t x>
struct dimensional_size {
dimensional_size();
~dimensional_size();
size_t get_capacity();
size_t get_breadth();
size_t get_height();
size_t get_width();
void up_size(size_t z = 0, size_t y = 0, size_t x = 0);
private:
size_t absolute_x;
size_t absolute_y;
size_t absolute_z;
};
template<typename type>
class dimensional_pos {
public:
dimensional_pos();
dimensional_pos(pos z = 0, pos y = 0, pos x = 0);
~dimensional_pos();
dimensional_pos& get_pos(vector<type> stream, type& t);
dimensional_pos& get_pos(vector<vector<type> > stream, type& t);
dimensional_pos& get_pos(vector<vector<vector<type> > > stream, type& t);
pos get_z();
pos get_y();
pos get_z();
private:
pos absolute_x;
pos absolute_y;
pos absolute_z;
};
Пример стиля масштабирования по вектору для поиска объекта типа
template<typename type>
dimensional_pos<type>& dimensional_pos<type>::get_pos(vector<vector<vector<type> > > stream, type& t) {
dimensional_pos<type> obj;
for (pos i = 0; i < stream.size(); i++) {
for (pos j = 0; j < stream[i].size(); j++) {
for (pos k = 0; k < stream[i][j].size(); k++) {
if (t == stream[i][j][k]) {
obj(i, j, k);
return obj;
}
}
}
}
}
Никаких ошибок.