Oto pomysł; a jeśli ktoś to napisze, musi mi przyznać prawa autorskie! Automatyczne wbudowane w dowolne matryce szablony takie, że te macierze nie są typami matematycznymi, lecz bardziej typu przechowywania lub struktury. W zależności od parametrów szablonu, te macierze mogą być tak proste, jak wartość skalarna, do tak złożonej, jak niemal nieskończenie wielowymiarowa jednostka w teorii, jeśli komputer mógłby na to pozwolić bez wyczerpania pamięci, ale w praktyce ograniczałoby się to do architektury, systemu operacyjnego i kompiluje wewnętrzne szczegóły dotyczące rozmiaru ich liczby całkowitej lub typu integralnego. Tak więc można mieć niskowolimetryczną matrycę wolumetryczną, która ma 3 wymiary, ale brakuje jej pamięci, ponieważ może wyglądać tak: Matrix<type, 1000000000,1000000000,1000000000> matOutOfBounds
zanim matryca wolumetryczna 8D będzie miała matrycę o wiele wyższym wymiarowaniu, taką jak Matrix<type, 2,2,2,2,2,2,2,2>
. Uproszczenia można dokonać, jeśli są "idealnymi matrycami". Tam każdy wymiar ma taką samą ilość elementów niezależnie od tego, ile ma wymiarów. Na przykład: <3,3>
<3,3,3>
<3,3,3,3>
są wszystkie idealne matryce. Uproszczenie będzie miało postać Matrix<type, 4^4>
, podobnie jak Matrix<type, 4,4,4,4>
, co daje 4x4x4x4 4D Matrycę wolumetryczną z 96 elementów w strukturze 4D. Gdzie `Matrix byłby macierzą wolumetryczną 3D z wieloma elementami, ale ma strukturę wolumetryczną 3D, ponieważ nasze obecne zegary i kompasy działają w zakresie od 360 stopni do pełnego koła, 60 minut, 60 sekund, z tym wyjątkiem, że istnieje wiele elementów pamięciowych elementów pływających.
To poniżej będzie wyglądało jak możliwą bibliotekę C++, którą ktoś umieściłby w swoich projektach; ale idea polega na tym, że jest to typ zbudowany w języku. Wtedy każdy z twoim językiem i kompilatorem może z nich korzystać.Mogą z nich korzystać z dowolnej liczby wymiarów, takich jak to, co przedstawia ten szablon:
// Header Declaration
template<typename ClassType, unsigned int...>
matrix{
}; // No need to show body just declaration for concept
// User Code Would Be
matrix<float,2,3,4,5,7> mat; // This would create a 2x3x4x5x7 matrix that is a 5th dimensional volumetric matrix
// Default type
matrix<int> mat2; // This creates a 1x1 matrix that would in essence be a scalar.
Teraz co mam pokazany jest aktualny C++ składni dla zmiennej liczbie argumentów szablonów. Pomysł polega na tym, że tego rodzaju pojemniki matrycowe będą budowane w typach!
Czy chcesz, aby były matematyczne? Pewnie, że to dobrze, ale użytkownik musiałby zdefiniować własne "algorytmy, metody, funkcje lub procedury", aby to zrobić.
Powodem musieliby być definiowane niezależnie to zrobić, aby z tego powodu:
mat<float, 3,3,3> mat1; 3x3x3 3D Volumetric Matrix - 27 elements
mat<float, 5,5> mat2; 5x5 2D Linear-Quadratic (Area) Matrix - 25 elements
mat<int, 6,7,8> mat3; 6x7x8 3D Volumetric Matrix - 336 elements
mat<bool, 8> mat4; 1x8 1D Linear Matrix (Array); transpose?
mat4::transpose; // built in - now 8x1 matrix
mat4::transpose; // back to 1x8.
class TheMotherLoad {// Many members and methods };
// ...
mat<TheMotherLoad*, 9,9,9,9,9,9,9,9,9> mat9;
// simplified version
mat<TheMotherLoad*, 9^9> mat9
// A 9 Dimensional Volumetric container So the first the would be a Cube
// with its sides having a length of 9 cells where the Volume 9^3 is the
// First Order of what a Volumetric Matrix is.
// Anything less is linear or quadratic either it being a scalar,
// translation, an array, a line, a point, a vector, rotation, quadratic and area)
// Now that we have a cube that has 729 elements and the next
// three 9s which are the 4th, 5th & 6th dimensions would act as another
// 9x9x9 matrix surrounding the first 3 dimensions respectively.
// Finally the 7th, 8th & 9th dimensions defines the "outer matrix"
// that also has "9x9x9" elements. So in total the number of elements
// in this matrix would be 729^3 and for every
Ze względu na właściwości jak macierze są to co określa co typ operacji matematycznych, które można zrobić z nimi tak to musi być zrobione na zewnątrz.
Oni już to zrobili, w języku COBOL, myślę, że to było? Oh .. nevermind –
Obecnie nie ma już wielu języków, które nie mają lambd i funkcji wyższego rzędu. – sepp2k
+1 dla DWIMNWIS –