Matrisler, vektörler, vb. İçeren doğrusal bir cebir kütüphanesi (uzun öykü kısa, bir okul ödevi) yazıyorum. Bu kütüphaneyi oluşturma sürecinde, nesneler üzerinde matematiksel işlemler yapan işlevler yaratacağım. Örneğin, devrik matris, ters matris, vektörü normalleştir vb.
Bu tür bir işlev için "en iyi uygulama" nın ne olduğunu merak ettim ... Yani, bu işlevi bir üye işlevi olarak mı yoksa üye olmayan olarak mı yapmalıyım? (Açıklık / kütüphane için aşkına)
Misal:
//Member function way:
B = A.transpose();
C = A.inverse();
//Non-member function way:
B = linalg::transpose(A); //Non-member transpose function in linear algebra namespace
C = linalg::inverse(A);
Bu tür operasyonlarla ilgili bir standart var mı? Ya da en azından insanların bunu yapmasının ortak bir yolu var mı? İlk seçeneğe yöneliyorum, ancak bunun tavsiye edilip edilmediğini bilmek istiyorum.