syam a écrit:
Qu'est-ce que tu veux faire exactement ? Si c'est, comme j'en ai l'impression, pouvoir utiliser des "index" du type que tu as choisi, std::vector n'est pas le bon choix il te faudrait plutôt une hashtable (conteneurs associatifs de type std::map, voire std::unordered_map si tu utilises du C++11 ou le TR1 C++0x).
J'ai pas compris ton explication, tu parle d'utiliser une map pour pouvoir utiliser un int comme clef ?
@panthere > Je ne comprends pas trop ta classe. Le paramètre de généricité concerne le type contenu pas le type des indices :
Code:
#ifndef DEF_TEMPLATE_TABLEAU
#define DEF_TEMPLATE_TABLEAU
#include <iostream>
#include <vector>
template <typename T1> class Tableaux
{
public:
//Paire();
void affiche(size_t v);
void setData(size_t v,size_t v2, T1 Dt);
//{ std::cout << "Dépassement d'indice sur un tableau : " << "\n"; }
private :
// std::vector<T1> NV1;//ok // À quoi ça sert ?
std::vector < std::vector < T1 > > NV2;
};
template <class T1>
void Tableaux<T1>::affiche (size_t v)
{
std::cout << "Info: " << v << "\n";
}
template <class T1>
void Tableaux<T1>::setData (size_t v, size_t v2, T1 Dt)
{
NV2.at(v).at(v1) = Dt;
// Je crois que ça marche aussi bien avec at et autant utiliser at si tu veut renvoyer une erreur en cas de dépassement de tableau
std::cout << "Info: " << v << Dt << "\n";
}
#endif
D'un point de vu API, j'aime beaucoup ce que propose eigen, qui remplace ça :
Code:
maclasse objtableau;
objtableau.setData(0,1,"string"); //tableau a plusieur dimention 0 = tableaux contenant d'autre tableaux, 1 index du tableaux, valeur
Par ça :
Code:
maclasse objtableau;
objtableau(0,1) = "string"; //tableau a plusieur dimention 0 = tableaux contenant d'autre tableaux, 1 index du tableaux, valeur
Je trouve que c'est élégant. Pour le faire il faut regarder du coté des functors (redéfinition de opérateur () ).
_________________
Je suis
Pitta, cartésien, irritable, irritant et névrosé (
de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'
ironie ou de
ne pas en tenir compte. Bonne journée et gardez le sourire.
