int* result =newint[size1 + size2];
std::copy(arr1, arr1 + size1, result);
std::copy(arr2, arr2 + size2, result + size1);
Juste une suggestion, vector fera mieux dans un tableau dynamique plutôt que de pointeur
est result est un std::vector type ? Peut-être expliquer ce que cela copy fonction? Je suis d'accord avec @juanchopanza, mais dans le cas texasbruce ne réagit pas, je dirais que sa' std::copy.
Si vous êtes en utilisant des tableaux, vous devez allouer un nouveau tableau assez grand pour stocker toutes les valeurs, puis copier les valeurs dans les tableaux. Cela nécessiterait de connaître le tableau des tailles, etc.
Si vous utilisez std::vector au lieu des tableaux (qui a d'autres avantages), cela devient plus simple:
Ici, où vous avez écrit, vous les premiers résultats.instruction insert, pourquoi avez-vous définir l'emplacement de l'insertion dans les résultats.fin()? je suis peut-être un malentendu fonctionnement de cette fonction avec la stl, sera d'abord le début, mais comme vous l'ajouter, il pousse juste les valeurs à la "fin" du vecteur.
Une autre alternative est d'utiliser l'expression de modèles, et prétendre que les deux sont concaténées (lazy evaluation). Quelques liens (vous pouvez faire des recherches sur google):
#include<iostream>#include<bits/stdc++.h>usingnamespace std;voidConcatenate(char*s1,char*s2){char s[200];int len1=strlen(s1);int len2=strlen(s2);int j;///Define k to store the values on Kth address Kstart from 0 to len1+len2;int k=0;for(j=0;j<len1;j++){
s[k]=s1[j];
k++;}for(j=0;j<len2;j++){
s[k]=s2[j];
k++;}///To place a null at the last of the concatenated string to prevent Printing Garbage value;
s[k]='\n';
cout<<s;}int main(){char s1[100];char s2[100];
cin.getline(s1,100);
cin.getline(s2,100);Concatenate(s1,s2);return0;}
Cela peut vous aider, il ne nécessite pas de vecteurs. J'ai eu un problème similaire dans ma programmation de classe. J'espère que cette aide, il était nécessaire que j'ai utilisé de l'arithmétique des pointeurs. Cela suppose que matrice1 et matrice2 sont initialisés de façon dynamique à la taille "aSize"
Donnée de type int * arr1 et int * arr2, ce programme Regroupe en int * arr3 les éléments des deux tableaux. Malheureusement, en C++, vous devez connaître la taille de chaque tableaux que vous souhaitez copier. Mais cela ne constitue pas un obstacle à choisir le nombre d'éléments que vous souhaitez copier à partir de arr1 et combien de arr2.
#include<iostream>usingnamespace std;int main(){int temp[]={1,2,3,4};int temp2[]={33,55,22};int* arr1,* arr2,*arr3;int size1(4), size2(3);//size1 and size2 is how many elements you //want to copy from the first and second array. In our case all.//arr1 = new int[size1]; //optional//arr2 = new int[size2];
arr1=temp;
arr2=temp2;
arr3 =newint;//or if you know the size: arr3 = new int[size1+size2];for(int i=0; i<size1+size2; i++){if(i<size1)
arr3[i]=arr1[i];else
arr3[i]= arr2[i-size1];}
cout<<endl;for(int i=0; i<size1+size2; i++){
cout<<arr3[i]<<", ";}}
Juste une suggestion,
vector
fera mieux dans un tableau dynamique plutôt que de pointeurresult
est unstd::vector
type ?Peut-être expliquer ce que cela
copy
fonction?Je suis d'accord avec @juanchopanza, mais dans le cas texasbruce ne réagit pas, je dirais que sa'
std::copy
.OriginalL'auteur texasbruce
Si vous êtes en utilisant des tableaux, vous devez allouer un nouveau tableau assez grand pour stocker toutes les valeurs, puis copier les valeurs dans les tableaux. Cela nécessiterait de connaître le tableau des tailles, etc.
Si vous utilisez
std::vector
au lieu des tableaux (qui a d'autres avantages), cela devient plus simple:avec la stl, sera d'abord le début, mais comme vous l'ajouter, il pousse juste les valeurs à la "fin" du vecteur.
OriginalL'auteur Reed Copsey
Une autre alternative est d'utiliser l'expression de modèles, et prétendre que les deux sont concaténées (lazy evaluation). Quelques liens (vous pouvez faire des recherches sur google):
http://www10.informatik.uni-erlangen.de/~pflaum/pflaum/ProSeminar/
http://www.altdevblogaday.com/2012/01/23/abusing-c-with-expression-templates/
http://aszt.inf.elte.hu/~gsd/halado_cpp/ch06s06.html
Si vous êtes à la recherche pour la facilité d'utilisation, essayez:
OriginalL'auteur user1095108
Voici la solution pour le même
Espère que cela aide.
OriginalL'auteur
Cela peut vous aider, il ne nécessite pas de vecteurs. J'ai eu un problème similaire dans ma programmation de classe. J'espère que cette aide, il était nécessaire que j'ai utilisé de l'arithmétique des pointeurs. Cela suppose que matrice1 et matrice2 sont initialisés de façon dynamique à la taille "aSize"
OriginalL'auteur DerfOh
Donnée de type int * arr1 et int * arr2, ce programme Regroupe en int * arr3 les éléments des deux tableaux. Malheureusement, en C++, vous devez connaître la taille de chaque tableaux que vous souhaitez copier. Mais cela ne constitue pas un obstacle à choisir le nombre d'éléments que vous souhaitez copier à partir de arr1 et combien de arr2.
OriginalL'auteur moldovean