2017-10-20 17 views
-6

Comme la façon suivante:Pouvons-nous créer un tableau d'ensembles en C++?

set<int> s[3]; 

Je l'ai essayé, mais il donne l'erreur dans la ligne où je l'avais essayé d'accéder à ses éléments en écrivant s[i][j] où l'erreur dit

no match for 'operator[ ]'

+1

Pourquoi ne pas 'std :: vecteur > '? – tadman

+6

'std :: set' n'a pas de' operator [] '... – Rakete1111

+5

il n'y a pas' operator [] 'pour' std :: set' – max66

Répondre

0

éléments d'une set n'est pas accessible par index. s [i] est le (i-1) 'e set mais s [i] [j] ne veut rien dire. Vous pouvez vérifier si un élément est présent dans l'ensemble à l'aide de la fonction de recherche. Par exemple, s [i] .find (3)! = S [i] .end(). Vous pouvez parcourir les éléments dans l'ordre trié en utilisant for (int x: s [i]) {} (C++ 11 et plus) ou en utilisant des itérateurs.

3

Le problème n'est pas le tableau de std::set -s, mais plutôt la façon dont vous essayez d'accéder aux éléments à l'intérieur de votre ensemble.

std::set ne supporte pas operator [], c'est la raison pour laquelle vous obtenez l'erreur:

no match for 'operator[ ]'

Au lieu de cela, l'objet d'accès à l'aide find() de la manière suivante:

auto iter = s[i].find(<value>); 
if (iter != s[i].end()) { 
    [..] // Do something with iter 
}