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

10 réponses

1 2 3
Avatar
Benoit Rousseau
Nicolas Aunai wrote:
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



vector< int > i;
for( int j = 0; j < 4 ; j ++ )
i.push_back( 1 );
for( int j = 0; j < 2 ; j ++ )
i.push_back( 0 );

a[0] = i;

for( int j = 0; j < 2 ; j ++ )
{
i[j] = 0;
i[j+4] = 1;
a[j+1] = i;
}

Bon, ok, c'est un peu lourd ;-)

--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

Avatar
Nicolas Aunai


vector< int > i;
for( int j = 0; j < 4 ; j ++ )
i.push_back( 1 );
for( int j = 0; j < 2 ; j ++ )
i.push_back( 0 );

a[0] = i;

for( int j = 0; j < 2 ; j ++ )
{
i[j] = 0;
i[j+4] = 1;
a[j+1] = i;
}

Bon, ok, c'est un peu lourd ;-)



je trouve pas ça super pratique, de plus dans la logique de ma fonction
ces vector sont constant, et mon but final est de comparer un 4eme
vector a ses 3 là pour voir s'il est égal a l'un d'entre eux.

comment faire pour initialiser un vector constant ?

const vector <int> i = ???

--
Nico,
http://astrosurf.com/nicoastro
messenger :

Avatar
Zouplaz
Nicolas Aunai - ç :



vector< int > i;
for( int j = 0; j < 4 ; j ++ )
i.push_back( 1 );
for( int j = 0; j < 2 ; j ++ )
i.push_back( 0 );

a[0] = i;

for( int j = 0; j < 2 ; j ++ )
{
i[j] = 0;
i[j+4] = 1;
a[j+1] = i;
}

Bon, ok, c'est un peu lourd ;-)



je trouve pas ça super pratique, de plus dans la logique de ma fonction
ces vector sont constant, et mon but final est de comparer un 4eme
vector a ses 3 là pour voir s'il est égal a l'un d'entre eux.

comment faire pour initialiser un vector constant ?

const vector <int> i = ???



Mais dans ce cas pourquoi utiliser un vector ? Un array classique ne ferait
pas l'affaire ??


Avatar
Nicolas Aunai
"Zouplaz" a émis l'idée suivante :


Mais dans ce cas pourquoi utiliser un vector ? Un array classique ne ferait
pas l'affaire ??


car mon 4eme tableau est un vector, et la méthode de comparaison avec
l'opérateur surchargé est bien plus pratique...

--
Nico,
http://astrosurf.com/nicoastro
messenger :

Avatar
Alexandre

je trouve pas ça super pratique, de plus dans la logique de ma fonction
ces vector sont constant, et mon but final est de comparer un 4eme
vector a ses 3 là pour voir s'il est égal a l'un d'entre eux.

comment faire pour initialiser un vector constant ?

const vector <int> i = ???


Tu peux rien faire. Vector ne se construit qu'à partir d'un int (pour sa
taille), ou d'un autre vector. Donc la syntaxe 'C' avec les accolades ne
peut exister.
Désolé.

Avatar
Zouplaz
Nicolas Aunai - ç :

"Zouplaz" a émis l'idée suivante :


Mais dans ce cas pourquoi utiliser un vector ? Un array classique ne
ferait pas l'affaire ??


car mon 4eme tableau est un vector, et la méthode de comparaison avec
l'opérateur surchargé est bien plus pratique...



En même temps, comparer deux array ça doit pas être la mer à boire, si ?


Avatar
Nicolas Aunai
"Zouplaz" avait écrit le 25/11/2003 :

En même temps, comparer deux array ça doit pas être la mer à boire, si ?


carrément pas, c'étais juste l'occasion d'en savoir plus sur les
vector.

--
Nico,
http://astrosurf.com/nicoastro
messenger :

Avatar
Bertrand Motuelle
Nicolas Aunai wrote:

comment faire pour initialiser un vector constant ?

const vector <int> i = ???



En utilisant le constructeur prenant une sequence definie par deux
iterateurs. Par exemple:

static const int init_values[] = { 1, 2, 3, 4, 5 };
const int* begin = init;
const int* end = begin + sizeof(init) / sizeof(init[0]);
const std::vector<int> i(begin, end);



Tu peux aussi utiliser des fonctions template pour cacher les sizeof():

template<typename T, size_t N>
const T* array_begin(const T (&array)[N])
{
return array;
}

template<typename T, size_t N>
const T* array_end(const T (&array)[N])
{
return array + N;
}

static const int init_values[] = { 1, 2, 3, 4, 5 };
const std::vector<int> i(array_begin(int_values),
array_end(init_values));


Bertrand.

Avatar
Benoit Dejean
Le Tue, 25 Nov 2003 18:44:16 +0100, Nicolas Aunai a écrit :

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 ?


passe par des tableaux

int aa[N]={ .... };
v = vector(aa, aa+N};

Gabriel Dos Reis à publié des papiers avec Bjarne Stroustrup sur le
future
http://anubis.dkuug.dk/JTC1/SC22/WG21/

http://anubis.dkuug.dk/JTC1/SC22/WG21/docs/papers/2003/n1509.pdf
http://anubis.dkuug.dk/JTC1/SC22/WG21/docs/papers/2003/n1493.pdf

Avatar
kanze
"Alexandre" wrote in message
news:<3fc3b55d$0$2362$...

je trouve pas ça super pratique, de plus dans la logique de ma
fonction ces vector sont constant, et mon but final est de comparer
un 4eme vector a ses 3 là pour voir s'il est égal a l'un d'entre
eux.

comment faire pour initialiser un vector constant ?

const vector <int> i = ???


Tu peux rien faire. Vector ne se construit qu'à partir d'un int (pour
sa taille), ou d'un autre vector. Donc la syntaxe 'C' avec les
accolades ne peut exister.


Vector se construit de plusieurs façons. C'est vrai que la syntaxe 'C'
ne marche pas (mais je crois qu'on y travaille), mais on peut s'y
approcher avec l'initialisation par paire d'itérateurs :

static int const initValues[] = { 1, 2, 3, 4 } ;
std::vector< int > const v( begin( initValues ), end( initValues ) ) ;

Étendre ce technique à des vector de vector, c'est moins évident.

--
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