OVH Cloud OVH Cloud

vector initialisation

26 réponses
Avatar
Nicolas Aunai
salut, encore moi avec mes vector..


j'aimerai comprendre maintenant comment se passe l'initialisation des
vector, exemple j'ai un vector de 3 vector de 6 entier, soit un tableau
a 3 lignes et 6 colones. J'aimerai initialiser les 3 lignes ainsi :

111100
011110
001111

pour celà je fais :

vector < vector<int> > a(3);
a[0]={1,1,1,1,0,0};
a[1]={0,1,1,1,1,0};
a[2]={0,0,1,1,1,1};


ça ne marche pas, j'en suis pas trop surpris.... qu'elle est la bonne
méthode ?


merci

--
Nico,
http://astrosurf.com/nicoastro
messenger : nicolas_aunai@hotmail.com

6 réponses

1 2 3
Avatar
Gabriel Dos Reis
writes:

[...]

| > | J'en ferais bien partie si j'avais une adresse email qui marchait.
|
| > | J'ai pas mal de problèmes personnels en ce moment. Alors, le C++
| > | devient un peu moins important.
|
| > Je comprends très bien. Nous avons tous chacun notre liste de priorité
| > lié à nos problèmes et situations personnels. Par exemple, te faire
| > parvenir les copies des messages du pôle d'expertise C/C++ n'est pas
| > la priorité la plus importante.
|
| C'est certainement moins important que la réussite scolaire de mes
| enfants, par exemple.

Très certainement. Et m'assurer que les messages t'arrivent est
nettement moins important que m'occuper de ma famille (village serait
plus approprié). M'enfin bon. Je ne sais pas pour toi, mais quand
j'envoie un message et que je reçois un bounce, je regarde quand même
-- en général, quand j'envoie un mail à quelqu'un, c'est que cela
présente une certaine valeur. Un ou deux bounces occasionnels, c'est
rien. Cela finit par agacer (au même titre que les spams), lorsque
systématique et si c'est une fausse adresse publiée pour conscience
professionnelle.

| Au moins dans mon cas, il y a d'autres choses dans la vie que le C++.

À qui le dis-tu :-) Tu as une famille dont il faut que tu t'occupes.
D'autres ont des villages à leurs charges.

Dois-je comprendre que lorsque tu seras de nouveau intéressé, tu feras
signe ?

-- Gaby
Avatar
Gabriel Dos Reis
Marc Boyer writes:

| Gabriel Dos Reis wrote:
| > Marc Boyer writes:
| > Ces templates sont devenus classiques
| >
| > template<typename T, int N>
| > inline const T* begin(const T (&array)[N])
| > { return array; }
| >
| > template<typename T, int N>
| > inline const T* end(const T (&array)[N])
| > { return array + N; }
|
| J'avais raté que la résolution de template savait
| prendre en compte la taille d'un tableau.

yep. Mais il faut faire attention à bien passer par référence.

| Je vais de surprise en surprise.

:-)

Le crédo « les tableaux C ne sont pas des pointeurs et encore plus
vrai en C++ » :-)

| Sinon, merci pour la ref du "Ruminations". J'ai beaucoup
| aimé le passage sur les itérateurs (et la subtilité des
| iterateurs en sens inverse). Le passage sur les objets
| fonctions qu'on peut composer aussi m'a un peu décoiffé
| aussi.

c'est un prêté pour un rendu :-)

-- Gaby
Avatar
Falk Tannhäuser
|> template<typename T, int N>
|> inline size_t size(const T (&)[N])
|> { return N; }
Parfois on a besoin d'une constante de compilation ;
dans ce cas la solution suivante est applicable :
_______________________________________________________
template <std::size_t N>
struct array { char value[N]; };

template<typename T, std::size_t N>
array<N> array_size_helper(T (&)[N]);

#define array_size(array) (sizeof array_size_helper(array).value)
_______________________________________________________

Je ne sais pas s'il y a un moyen d'éviter le #define sans
rendre l'utilisation de cette solution trop compliquée...

Falk
Avatar
Gabriel Dos Reis
Falk Tannhäuser writes:

| |> template<typename T, int N>
| |> inline size_t size(const T (&)[N])
| |> { return N; }
| Parfois on a besoin d'une constante de compilation ;
| dans ce cas la solution suivante est applicable :
| _______________________________________________________
| template <std::size_t N>
| struct array { char value[N]; };
|
| template<typename T, std::size_t N>
| array<N> array_size_helper(T (&)[N]);
|
| #define array_size(array) (sizeof array_size_helper(array).value)
| _______________________________________________________
|
| Je ne sais pas s'il y a un moyen d'éviter le #define sans
| rendre l'utilisation de cette solution trop compliquée...

C'est, entre autres, pour couper court à ces « abus » de macros et de
templates que j'ai proposé les « constant-valued functions »

http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1521.pdf

Voir également

« literals for user-defined types »
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1511.pdf 


-- Gaby
Avatar
Falk Tannhäuser
Gabriel Dos Reis wrote:
Falk Tannhäuser writes:
| Parfois on a besoin d'une constante de compilation ;
| dans ce cas la solution suivante est applicable :
| _______________________________________________________
| template <std::size_t N>
| struct array { char value[N]; };
|
| template<typename T, std::size_t N>
| array<N> array_size_helper(T (&)[N]);
|
| #define array_size(array) (sizeof array_size_helper(array).value)
| _______________________________________________________
|
| Je ne sais pas s'il y a un moyen d'éviter le #define sans
| rendre l'utilisation de cette solution trop compliquée...

C'est, entre autres, pour couper court à ces « abus » de macros et de
templates que j'ai proposé les « constant-valued functions »
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1521.pdf

Voir également « literals for user-defined types »
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1511.pdf


Cool ! Espérons que ça passera à la prochaine révision de la Norme...

Falk

Avatar
kanze
Gabriel Dos Reis wrote in message
news:...

Dois-je comprendre que lorsque tu seras de nouveau intéressé, tu feras
signe ?


Disons que ça m'intéresse toujours, même si actuellement toute
participation serait plutôt passive. Et que je ferais signe dès que j'ai
une adresse email qui fonctionne.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

1 2 3