"Jean-Marc Bourguet" a écrit ...les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
Ça me paraissait la méthode adaptée à ce que je voulais,
la plus simple. Ce n'est peut-être pas le cas.A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
Pas pour VC++ 6.0 (Je sais, c'est une pièce de musée).
"Jean-Marc Bourguet" <jm@bourguet.org> a écrit ...
les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
Ça me paraissait la méthode adaptée à ce que je voulais,
la plus simple. Ce n'est peut-être pas le cas.
A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
Pas pour VC++ 6.0 (Je sais, c'est une pièce de musée).
"Jean-Marc Bourguet" a écrit ...les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
Ça me paraissait la méthode adaptée à ce que je voulais,
la plus simple. Ce n'est peut-être pas le cas.A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
Pas pour VC++ 6.0 (Je sais, c'est une pièce de musée).
Sur mon système (W2000pro + VC6.0 + 512Mo),
on atteint les limites internes avec 280, alors 10000 !!...
Sur mon système (W2000pro + VC6.0 + 512Mo),
on atteint les limites internes avec 280, alors 10000 !!...
Sur mon système (W2000pro + VC6.0 + 512Mo),
on atteint les limites internes avec 280, alors 10000 !!...
quelles sont les occurences de 'N' dans le patron défini ? leur nombre,
leur implication par rapport à l'algorithmie de la classe, ... ?
C'est le n de Z/nZ.
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
quelles sont les occurences de 'N' dans le patron défini ? leur nombre,
leur implication par rapport à l'algorithmie de la classe, ... ?
C'est le n de Z/nZ.
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
quelles sont les occurences de 'N' dans le patron défini ? leur nombre,
leur implication par rapport à l'algorithmie de la classe, ... ?
C'est le n de Z/nZ.
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
"Jean-Marc Bourguet" a écrit ...les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
Ça me paraissait la méthode adaptée à ce que je voulais,
la plus simple. Ce n'est peut-être pas le cas.A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
Pas pour VC++ 6.0 (Je sais, c'est une pièce de musée).
Je vais essayer avec autre chose.
int x;
Au fait, que pensez vous (collectif) du nouveau turbo C++ ?
"Jean-Marc Bourguet" <jm@bourguet.org> a écrit ...
les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
Ça me paraissait la méthode adaptée à ce que je voulais,
la plus simple. Ce n'est peut-être pas le cas.
A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
Pas pour VC++ 6.0 (Je sais, c'est une pièce de musée).
Je vais essayer avec autre chose.
int x;
Au fait, que pensez vous (collectif) du nouveau turbo C++ ?
"Jean-Marc Bourguet" a écrit ...les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
Ça me paraissait la méthode adaptée à ce que je voulais,
la plus simple. Ce n'est peut-être pas le cas.A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
Pas pour VC++ 6.0 (Je sais, c'est une pièce de musée).
Je vais essayer avec autre chose.
int x;
Au fait, que pensez vous (collectif) du nouveau turbo C++ ?
"Etienne Rousee" writes:
Oui, mais ça reste inapplicable dans mon cas.
Je crois que je n'ai pas le choix, il faut que j'abandonne
les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
"Etienne Rousee" <etienne@rousee.org> writes:
Oui, mais ça reste inapplicable dans mon cas.
Je crois que je n'ai pas le choix, il faut que j'abandonne
les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
"Etienne Rousee" writes:
Oui, mais ça reste inapplicable dans mon cas.
Je crois que je n'ai pas le choix, il faut que j'abandonne
les templates.
Qu'est-ce que tu voulais que les templates t'apportent?
A noter que:
template <int& N>
class foo { ... };
int x;
foo<x> bar;
est possible.
"Vincent Lascaux" a écrit ...Juste pour le fun:
template<int N>
struct EntierDynamique
{
static inline bool Execute(int n)
{
if (!EntierDynamique<N - 1>::Execute(N - 1) && n == N)
{
Entier<N> l; ...
return true;
}
else
return false;
}
};
template<>
struct EntierDynamique<0>
{
static inline bool Execute(int n)
{
return false;
}
};
EntierDynamique<100000>::Execute(k);
C'est amusant.
Sur mon système (W2000pro + VC6.0 + 512Mo),
on atteint les limites internes avec 280, alors 10000 !!...
"Vincent Lascaux" <nospam@nospam.invalid> a écrit ...
Juste pour le fun:
template<int N>
struct EntierDynamique
{
static inline bool Execute(int n)
{
if (!EntierDynamique<N - 1>::Execute(N - 1) && n == N)
{
Entier<N> l; ...
return true;
}
else
return false;
}
};
template<>
struct EntierDynamique<0>
{
static inline bool Execute(int n)
{
return false;
}
};
EntierDynamique<100000>::Execute(k);
C'est amusant.
Sur mon système (W2000pro + VC6.0 + 512Mo),
on atteint les limites internes avec 280, alors 10000 !!...
"Vincent Lascaux" a écrit ...Juste pour le fun:
template<int N>
struct EntierDynamique
{
static inline bool Execute(int n)
{
if (!EntierDynamique<N - 1>::Execute(N - 1) && n == N)
{
Entier<N> l; ...
return true;
}
else
return false;
}
};
template<>
struct EntierDynamique<0>
{
static inline bool Execute(int n)
{
return false;
}
};
EntierDynamique<100000>::Execute(k);
C'est amusant.
Sur mon système (W2000pro + VC6.0 + 512Mo),
on atteint les limites internes avec 280, alors 10000 !!...
Etienne Rousee wrote on 30/10/2006 17:59:quelles sont les occurences de 'N' dans le patron défini ? leur nombre,
leur implication par rapport à l'algorithmie de la classe, ... ?
C'est le n de Z/nZ.
ok, je l'avais compris comme cela.
mais cela ne concerne que Entier, pas un anneau dont lequel il existe
peut-être, donc en reformulant, est-ce que N est vraiment le paramètre n
de "Z/nZ" et donc sera sûrement discret car premier (pour que l'anneau
soit un groupe)
ou est-il seulement un paramètre (qlq) utilisé pour les
opérateurs mathématiques de Entier ?
ie
Entier<N> operator+ (Entier<N> const& a, Entier<N> const& b){
return Entier<N>((a + b) % N);
}
question subsidiaire, quelles est la limite de N ?
(32, 64 bits ou précision arbitraire ("BigInteger"))
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
reste un doute (ou je ne suis pas sur de bien comprendre)
Entier stocke-t-il la partie congrue à N d'un nombre (0 <= contenu de
Entier < N)
ou stocke-t-il une valeur quelconque, le modulo
n'intervenant que dans les opérateurs numériques ?
Etienne Rousee wrote on 30/10/2006 17:59:
quelles sont les occurences de 'N' dans le patron défini ? leur nombre,
leur implication par rapport à l'algorithmie de la classe, ... ?
C'est le n de Z/nZ.
ok, je l'avais compris comme cela.
mais cela ne concerne que Entier, pas un anneau dont lequel il existe
peut-être, donc en reformulant, est-ce que N est vraiment le paramètre n
de "Z/nZ" et donc sera sûrement discret car premier (pour que l'anneau
soit un groupe)
ou est-il seulement un paramètre (qlq) utilisé pour les
opérateurs mathématiques de Entier ?
ie
Entier<N> operator+ (Entier<N> const& a, Entier<N> const& b){
return Entier<N>((a + b) % N);
}
question subsidiaire, quelles est la limite de N ?
(32, 64 bits ou précision arbitraire ("BigInteger"))
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
reste un doute (ou je ne suis pas sur de bien comprendre)
Entier stocke-t-il la partie congrue à N d'un nombre (0 <= contenu de
Entier < N)
ou stocke-t-il une valeur quelconque, le modulo
n'intervenant que dans les opérateurs numériques ?
Etienne Rousee wrote on 30/10/2006 17:59:quelles sont les occurences de 'N' dans le patron défini ? leur nombre,
leur implication par rapport à l'algorithmie de la classe, ... ?
C'est le n de Z/nZ.
ok, je l'avais compris comme cela.
mais cela ne concerne que Entier, pas un anneau dont lequel il existe
peut-être, donc en reformulant, est-ce que N est vraiment le paramètre n
de "Z/nZ" et donc sera sûrement discret car premier (pour que l'anneau
soit un groupe)
ou est-il seulement un paramètre (qlq) utilisé pour les
opérateurs mathématiques de Entier ?
ie
Entier<N> operator+ (Entier<N> const& a, Entier<N> const& b){
return Entier<N>((a + b) % N);
}
question subsidiaire, quelles est la limite de N ?
(32, 64 bits ou précision arbitraire ("BigInteger"))
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
reste un doute (ou je ne suis pas sur de bien comprendre)
Entier stocke-t-il la partie congrue à N d'un nombre (0 <= contenu de
Entier < N)
ou stocke-t-il une valeur quelconque, le modulo
n'intervenant que dans les opérateurs numériques ?
Effectivement... comme je l'ai dit, c'était non testé... Le code suivant
non
testé non plus devrait permettre d'aller beaucoup plus loin (au limite des
entiers ?)
template<int Low, int High>
struct EntierDynamique
{
static void Execute(int n)
{
const int Mid = (Low + High) / 2
if (n < Mid)
{
EntierDynamique<Low, Mid - 1>::Execute(n);
} else if (n > Mid) {
EntierDynamique<Mid + 1, Low>::Execute(n);
} else {
Entier<N> l; ...
}
}
};
template<int N>
struct EntierDynamique<N, N>
{
static void Execute() { }
};
template<int N>
struct EntierDynamique<N, N - 1>
{
static void Execute() { }
};
EntierDynamique<0, 10000>::Execute(k);
Effectivement... comme je l'ai dit, c'était non testé... Le code suivant
non
testé non plus devrait permettre d'aller beaucoup plus loin (au limite des
entiers ?)
template<int Low, int High>
struct EntierDynamique
{
static void Execute(int n)
{
const int Mid = (Low + High) / 2
if (n < Mid)
{
EntierDynamique<Low, Mid - 1>::Execute(n);
} else if (n > Mid) {
EntierDynamique<Mid + 1, Low>::Execute(n);
} else {
Entier<N> l; ...
}
}
};
template<int N>
struct EntierDynamique<N, N>
{
static void Execute() { }
};
template<int N>
struct EntierDynamique<N, N - 1>
{
static void Execute() { }
};
EntierDynamique<0, 10000>::Execute(k);
Effectivement... comme je l'ai dit, c'était non testé... Le code suivant
non
testé non plus devrait permettre d'aller beaucoup plus loin (au limite des
entiers ?)
template<int Low, int High>
struct EntierDynamique
{
static void Execute(int n)
{
const int Mid = (Low + High) / 2
if (n < Mid)
{
EntierDynamique<Low, Mid - 1>::Execute(n);
} else if (n > Mid) {
EntierDynamique<Mid + 1, Low>::Execute(n);
} else {
Entier<N> l; ...
}
}
};
template<int N>
struct EntierDynamique<N, N>
{
static void Execute() { }
};
template<int N>
struct EntierDynamique<N, N - 1>
{
static void Execute() { }
};
EntierDynamique<0, 10000>::Execute(k);
Qu'est-ce que tu voulais que les templates t'apportent?
Des validations de type. Avec des templates, Entier< 5 > et
Entier< 6 > sont deux types distinctes. Et si je n'ai pas prévu
des conversions implicites ou des opérateurs mixtes, quelque
chose du genre :
Entier< 5 > x ;
Entier< 6 > y ;
x = y ;
serait une erreur lors de la compilation. (Si j'utilise un
paramètre au constructeur, en revanche, le mieux que je peux
faire, c'est une erreur à l'exécution.)
Si je veux supporter ce genre de chose, les templates sont une
mauvaise solution, mais sinon, c'est la solution à préférer.
Qu'est-ce que tu voulais que les templates t'apportent?
Des validations de type. Avec des templates, Entier< 5 > et
Entier< 6 > sont deux types distinctes. Et si je n'ai pas prévu
des conversions implicites ou des opérateurs mixtes, quelque
chose du genre :
Entier< 5 > x ;
Entier< 6 > y ;
x = y ;
serait une erreur lors de la compilation. (Si j'utilise un
paramètre au constructeur, en revanche, le mieux que je peux
faire, c'est une erreur à l'exécution.)
Si je veux supporter ce genre de chose, les templates sont une
mauvaise solution, mais sinon, c'est la solution à préférer.
Qu'est-ce que tu voulais que les templates t'apportent?
Des validations de type. Avec des templates, Entier< 5 > et
Entier< 6 > sont deux types distinctes. Et si je n'ai pas prévu
des conversions implicites ou des opérateurs mixtes, quelque
chose du genre :
Entier< 5 > x ;
Entier< 6 > y ;
x = y ;
serait une erreur lors de la compilation. (Si j'utilise un
paramètre au constructeur, en revanche, le mieux que je peux
faire, c'est une erreur à l'exécution.)
Si je veux supporter ce genre de chose, les templates sont une
mauvaise solution, mais sinon, c'est la solution à préférer.
[] est-il seulement un paramètre (qlq) utilisé pour les
opérateurs mathématiques de Entier ?
Aussi.
ie
Entier<N> operator+ (Entier<N> const& a, Entier<N> const& b){
return Entier<N>((a + b) % N);
}
Oui, j'ai écrit ça, mais en surcharge de méthode, pas de fonction globale.
question subsidiaire, quelles est la limite de N ?
(32, 64 bits ou précision arbitraire ("BigInteger"))
En théorie, la plus grande possible, mais soyons réalistes,
pour le moment des int ou des long ordinaires me suffisent.
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
De plus, je vais avoir une classe Anneau contenant une collection
d'Entier, et des opérateur fonctionnant dessus.
reste un doute (ou je ne suis pas sur de bien comprendre)
Entier stocke-t-il la partie congrue à N d'un nombre (0 <= contenu de
Entier < N)
Oui.
[] est-il seulement un paramètre (qlq) utilisé pour les
opérateurs mathématiques de Entier ?
Aussi.
ie
Entier<N> operator+ (Entier<N> const& a, Entier<N> const& b){
return Entier<N>((a + b) % N);
}
Oui, j'ai écrit ça, mais en surcharge de méthode, pas de fonction globale.
question subsidiaire, quelles est la limite de N ?
(32, 64 bits ou précision arbitraire ("BigInteger"))
En théorie, la plus grande possible, mais soyons réalistes,
pour le moment des int ou des long ordinaires me suffisent.
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
De plus, je vais avoir une classe Anneau contenant une collection
d'Entier, et des opérateur fonctionnant dessus.
reste un doute (ou je ne suis pas sur de bien comprendre)
Entier stocke-t-il la partie congrue à N d'un nombre (0 <= contenu de
Entier < N)
Oui.
[] est-il seulement un paramètre (qlq) utilisé pour les
opérateurs mathématiques de Entier ?
Aussi.
ie
Entier<N> operator+ (Entier<N> const& a, Entier<N> const& b){
return Entier<N>((a + b) % N);
}
Oui, j'ai écrit ça, mais en surcharge de méthode, pas de fonction globale.
question subsidiaire, quelles est la limite de N ?
(32, 64 bits ou précision arbitraire ("BigInteger"))
En théorie, la plus grande possible, mais soyons réalistes,
pour le moment des int ou des long ordinaires me suffisent.
plus avant que représente la classe Entier par rapport à un anneau?
Un "Entier" est un entier modulo N.
De plus, je vais avoir une classe Anneau contenant une collection
d'Entier, et des opérateur fonctionnant dessus.
reste un doute (ou je ne suis pas sur de bien comprendre)
Entier stocke-t-il la partie congrue à N d'un nombre (0 <= contenu de
Entier < N)
Oui.