Equivalent de std::vector

Résolu
firnafin
Messages postés
2
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
4 février 2010
- 4 févr. 2010 à 01:06
krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
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.

4 réponses

Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
4 févr. 2010 à 05:34
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 ] );
3
krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
14 février 2015
51
4 févr. 2010 à 09:42
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é. -
3
firnafin
Messages postés
2
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
4 février 2010

4 févr. 2010 à 17:20
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++ .
0
krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
14 février 2015
51
4 févr. 2010 à 17:34
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é. -
0