Недавно я видел несколько классов массивов Matrix и 1D, реализованных на C ++, где каждый отдельный элемент заключен в класс (например, класс Element). Обычно нам нравится иметь контейнеры, такие как Matrix, которые содержат фактические элементы (например, int), последовательные в памяти. Использование пользовательского класса для отдельных элементов может дать вам некоторую гибкость, но каковы возможные недостатки?
Для краткости см. Псевдокод:
// 1st approach: Elements stored in their type.
template <class T>
class Matrix
{
T *m_data;
//..
};
// 2nd approach: Elements wrapped into a class
template<class T>
class Matrix
{
std::set<Element<T> > m_data; // or using std::vector<Element<T> > m_data
//..
}; // Element is a class representing single element of type T
каковы могут быть последствия этого второго подхода, особенно если нам нужно использовать матрицу для большого объема данных? Кроме того, если нам нужно использовать этот тип при программировании на GPU (перевод в память устройства туда и обратно)?