Le moyen le plus efficace pour ajouter des tableaux en C#?
Je suis en tirant des données d'un de la vieille école ActiveX sous la forme de tableaux de doubles. Je n'ai pas d'abord connaître le nombre final d'échantillons, je vais récupérer.
Quel est le moyen le plus efficace pour concaténer ces tableaux en C# comme je les sortir du système?
- Ces tableau des échantillons de même ou de différentes tailles?
- Les tableaux sont tous de la même taille, sauf le dernier, c'est à dire 9 tableaux de 1000 échantillons et le dernier contenant 555 échantillons.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas ajouter à un tableau réel - de la taille d'un tableau est fixe au moment de la création. Au lieu de cela, utilisez un
List<T>
qui peuvent grandir comme il faut.Sinon, conservez une liste de tableaux et de les enchaîner tous que lorsque vous avez saisi tout.
Voir Eric Lippert du blog sur les tableaux pour plus de détails et de compréhension que j'ai pu fournir de façon réaliste 🙂
Je crois que si vous avez 2 piles de même type que vous souhaitez combiner dans un troisième tableau, il y a un moyen très simple de le faire.
voici le code:
Je recommande la réponse que l'on trouve ici: Comment concaténer deux tableaux en C#?
par exemple
La concaténation de tableaux est simple à l'aide de linq extensions qui sont livrés en standard avec .Net 4
Chose la plus importante à retenir est que linq fonctionne avec
IEnumerable<T>
objets, afin d'obtenir un tableau arrière en tant que votre résultat, alors vous devez utiliser le.ToArray()
méthode à la finExemple de la concaténation de deux tableaux d'octets:
La solution ressemble à beaucoup de plaisir, mais il est possible de concaténer des tableaux en deux états. Lorsque vous êtes à la manipulation de grands tableaux d'octets, je suppose qu'il est inefficace d'utiliser une Liste chaînée pour contenir chaque octet.
Voici un exemple de code pour la lecture des octets à partir d'un flux et d'extension d'un tableau d'octets à la volée:
Je crois que si vous avez 2 piles de même type que vous souhaitez les combiner en un seul tableau, il y a un moyen très simple de le faire.
Voici le code:
ou
Si vous pouvez faire un rapprochement du nombre d'articles qui seront là à la fin, utilisez la surcharge de la Liste constuctor qui prend en compte comme un paramètre. Vous permettra d'économiser cher Liste des duplications. Sinon, vous avez à payer pour cela.
Vous ne pourriez pas besoin de concaténer résultat final en contigus tableau. Au lieu de cela, garder l'ajout à la liste comme suggéré par Jon. À la fin vous aurez un tableau en escalier (enfin, presque rectangulaire, en fait). Lorsque vous avez besoin pour accéder à un élément par index, utiliser à la suite de schéma d'indexation:
Itération sur tableau en escalier est aussi simple:
Cela vous permet d'économiser de l'allocation de mémoire et la copie est à la charge d'un peu plus lent, l'accès à l'élément. Si ce sera un gain de performances dépend de la taille de vos données, de données de modèles d'accès et les contraintes de mémoire.
Ici est un produit de classe basée sur ce que Constantin a dit:
Olmo la suggestion est très bon, mais je voudrais ajouter ceci:
Si vous n'êtes pas sûr de la taille, il est préférable de faire un peu plus gros qu'un peu plus petit. Lorsque la liste est pleine, gardez à l'esprit qu'il double sa taille pour ajouter plus d'éléments.
Par exemple: supposons que vous aurez besoin d'environ 50 éléments. Si vous utilisez un 50 éléments la taille et le nombre final d'éléments est de 51, vous vous retrouverez avec un 100 de la taille de la liste de 49 gaspillée positions.