erişimleri yine pointer ile yapabilirsin. yani birileri 10. duvara erişecekse onlara &walls[10] verebilirsin ve ondan sonrası aynı olur. Lakin bunların bellekte rastgele dağılıp içlerinde id fieldı tutuyor olmalarının çok avantajını göremiyorum. yani nesneleri arraylerde tutup, findFoo'ları Foo[] ile (yani lineer search yerine tek çarpma ile) değiştirip, data structure hieararchisinde pointer kullanmaya devam etsen sanki best of both worlds olacak
Eğer array'de traverse yaparken her iterasyonda a[] nin sana bir çarpma getirmesinden korkuyorsan o döngüler de şöyle yazılabilir:
for (A* ia = a; ia != a + count; ++ia){
// do stuff with ia
}
böylece her iterasyonda bir toplama yapmış olursun (ki bunu compiler'ın becerebiliyo olmasını beklerim ama belki amiga zamanı compilerları geride kaldı)