Equivalent de std::vector [Résolu]

Messages postés
2
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
4 février 2010
- - Dernière réponse : krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
- 4 févr. 2010 à 17:34
Bonjour à tous.

j'apprends tout juste le c# mais je ne trouve pas d'équivalent à std:vector du c++. J' ai bien regarder les collections de System.Collection mais aucune ne semble implementer une acces direct comme vector ( [] ).Je veux simplement pouvoir faire ca :
T t;
std::vector<T> v;
v[0]=t;

mais en c#, ou tu du moins un tableau de taille variable avec acces en O(1).
J'attends vos reponse avec impatience ,merci.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
28
3
Merci
Salut, quasiment toutes les collections séquentielles possèdent un indexeur, Liste< T >, Collection< T > ..

string s1 = "csharpfr.com";

List< string > list1 = new List< string >( );
//list1[ 0 ] = s1; // KO, Count == 0
list1.Add( s1 );
MessageBox.Show( list1[ 0 ] ); // OK, Count == 1

List< string > list2 = new List< string >( new string[ 10 ] );
list2[ 9 ] = s1; // OK, Count == 10
MessageBox.Show( list2[ 9 ] );

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
28
3
Merci
Salut

Comme dit Lutinore, à peu près toutes les classes de System.Collection possèdent un indexeur (qui permet de récupérer/attribuer une valeur de cette façon : maCollection[2])

Pour voir si une classe a un indexeur, il faut aller sur MSDN, trouver ta classe, et chercher dans ses propriétés. Le prototype d'un indexeur en C# est le suivant :
public T this [
    int index
] { get; set; }

(T représentant bien sûr le type de retour)

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de krimog
Messages postés
2
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
4 février 2010
0
Merci
Merci bien.
En effet cela fonctionne.Je cherchais dans la documentation de msdn a la rubrique methode alors que c'est une propriété , chose nouvelle pour moi venant du c/c++ .
Commenter la réponse de firnafin
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
28
0
Merci
Dans le doute, regarde carrément les champs ;)

Ceci dit, maintenant que tu le soulignes, c'est vrai que c'est étonnant que les surcharges d'opérateurs soient des méthodes et que l'indexeur (une sorte de surcharge de []) soit une propriété...

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog