Salut à toutes et à tous !

Me revoilà à gratouiller des conseils

J'ai un type de données D à deux dimensions (spatial/temporel). Pour des raisons pratiques, il me paraissait mieux d'implémenter ça sous forme de vecteurs de vecteurs et non de matrices (j'ai essayé, c'était le bazar, j'ai fait demi-tour ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
class D
{
    public:
        D();
        D(const std::string & name, const std::vector<std::vector<double> >& data);
        virtual ~D();
 
        // Read-Only Iteration along first dimension
        typedef std::vector<std::vector<double> >::const_iterator const_iterator;
        const_iterator begin() { return m_data.begin(); }
        const_iterator end() { return m_data.end(); }
 
    protected:
    private:
        std::string m_variableName;
        std::vector<std::vector<double> > m_data; 
        int m_spatialLength;
        int m_temporalLength;
};
Maintenant, j'aimerais appliquer un foncteur à chaque double contenu dans le champs m_data. Bon, y'a du foreach de foreach dans l'air, ça ça devrait aller.
Mais j'ai du mal à intuiter (et googliser) sur qui doit faire quoi.

Est-ce que c'est le foncteur qui décortique la donnée D avec des foreach pour finalement s'appliquer sur chacun des doubles, ou est-ce que c'est la donnée qui accueille un pointeur sur le foncteur pour descendre les dimensions et l'appliquer sur chaque double ?

Infos:
- m_data est assez gros, normalement constant, on a accès à D via un shared_ptr. Je ne sais pas trop quand le déférencer (ni même si je dois le faire).
- le foncteur est une composition utilisable via un unique_ptr

Merci d'avance de votre aide !