N boyutlu bir ızgara üzerinde çalışıyorum.
Herhangi bir boyuta (2B, 3B, 4B, vb.) Bağlı olarak yuvalanmış döngüler oluşturmak istiyorum.
Bunu zarif ve hızlı bir şekilde nasıl yapabilirim? Problemimin basit bir resminin altında. C++ 'da yazıyorum ama bu tür soruların diğer diller için yararlı olabileceğini düşünüyorum.
Yapmam gerekenler bölümündeki endeksleri (i, j, k ...) bilmem gerekiyor. Düzenleme: lower_bound ve upper_bound, kılavuzdaki dizinleri temsil eder, böylece her zaman pozitif olurlar.Değişken iç içe döngüler
#include <vector>
int main()
{
// Dimension here is 3D
std::vector<size_t> lower_bound({4,2,1});
std::vector<size_t> upper_bound({16,47,9});
for (size_t i = lower_bound[0]; i < upper_bound[0]; i ++)
for (size_t j = lower_bound[1]; j < upper_bound[1]; j ++)
for (size_t k = lower_bound[2]; k < upper_bound[2]; k ++)
// for (size_t l = lower_bound[3]; l < upper_bound[3]; l ++)
// ...
{
// Do stuff such as
grid({i,j,k}) = 2 * i + 3 *j - 4 * k;
// where grid size is the total number of vertices
}
}
... ve '// Do şeylere gerçekten emin 'kısım? – Wolf
Ne demek istiyorsun? Herhangi bir boyut için genel olan grid gibi [[i, j, k}] dizin ızgaramı arıyorum. Belki farklı yapabilirim ama yine de – coincoin
Recursion cevabı ile ilgileniyorum. –