Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

concatener deux vector

6 réponses
Avatar
lud42fr
Bonjour,

je viens de lire la doc sur les vecteurs (std::vector) et je ne voit aucune
methode pour les concatener ?

jusque la je fait un truc bien nul mais je suppose qu'il y a mieux !!!

ex:

for (int i=0;i<V2.size();i++)
V1.push_back(V2[i]);

Si quelqu'un a mieux (et je l'espere !!), je suis preneur !!

Ludo
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/

6 réponses

Avatar
Fabien SK
lud42fr wrote:

Bonjour,

je viens de lire la doc sur les vecteurs (std::vector) et je ne voit aucune
methode pour les concatener ?

jusque la je fait un truc bien nul mais je suppose qu'il y a mieux !!!

ex:

for (int i=0;i<V2.size();i++)
V1.push_back(V2[i]);


Si tu utilises la méthod "push_back", fais un "reserve" avant, ça peut
éviter des réallocations inutiles

----

std::vector<int> aaa;
aaa.push_back(10);
aaa.push_back(20);

std::vector<int> bbb;
bbb.push_back(30);
bbb.push_back(40);

aaa.insert(aaa.end(), bbb.begin(), bbb.end());

std::cout << aaa.size() << " - " << aaa.back() << std::endl;

Avatar
Christophe de Vienne
lud42fr wrote:


Bonjour,

je viens de lire la doc sur les vecteurs (std::vector) et je ne voit
aucune methode pour les concatener ?



V1.insert( V1.end(), V2.begin(), V2.end() );


--
Christophe de Vienne
Experience is something you don't get until just after you need it.
Oliver's Law.

Avatar
Fabien LE LEZ
On 24 Jul 2003 18:35:31 +0200, Gabriel Dos Reis
wrote:

| V1.insert( V1.end(), V2.begin(), V2.end() );

Cela suppose que V1 a sseez de place pour la suite V2.


Euh... Tu confondrais pas avec std::copy, par hasard ?


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Avatar
Gabriel Dos Reis
Fabien LE LEZ writes:

| On 24 Jul 2003 18:35:31 +0200, Gabriel Dos Reis
| wrote:
|
| >| V1.insert( V1.end(), V2.begin(), V2.end() );
| >
| >Cela suppose que V1 a sseez de place pour la suite V2.
|
| Euh... Tu confondrais pas avec std::copy, par hasard ?

Je confonds simplement.

-- Gaby
Avatar
Christophe de Vienne
Gabriel Dos Reis wrote:

Fabien LE LEZ writes:

| On 24 Jul 2003 18:35:31 +0200, Gabriel Dos Reis
| wrote:
|
| >| V1.insert( V1.end(), V2.begin(), V2.end() );
| >
| >Cela suppose que V1 a sseez de place pour la suite V2.
|
| Euh... Tu confondrais pas avec std::copy, par hasard ?

Je confonds simplement.



L'espace d'un instant j'ai eu peur :-)

--
Christophe de Vienne
Experience is something you don't get until just after you need it.
Oliver's Law.

Avatar
Gabriel Dos Reis
writes:

| Gabriel Dos Reis wrote in message
| news:...
| > Christophe de Vienne writes:
|
| > | lud42fr wrote:
|
| > | > je viens de lire la doc sur les vecteurs (std::vector) et je ne
| > | > voit aucune methode pour les concatener ?
|
| > | V1.insert( V1.end(), V2.begin(), V2.end() );
|
| > Cela suppose que V1 a sseez de place pour la suite V2.
|
| > std::copy(V2.begin(), V2.end(), std::back_insert(V1));
|
| > tu peux faire un reserve() avant.
|
| Je ne comprends pas trop la rémarque sur « assez de place » ; entre
| l'insert de Christophe et ta copy, ce n'est qu'une question de style.

lis les messages qui ont suivi.

-- Gaby