2010-07-27 4 views
0

Par exemple, j'ai un tableau contenant environ 10 éléments.Comment obtenir l'élément précédent de std :: deque?

std::deque<int> d; 
front_inserter(d) = 100; 
front_inserter(d) = 200; 
front_inserter(d) = 300; 
... 
front_inserter(d) = 900; 
front_inserter(d) = 1000; 

Question: comment trouver l'élément 900, sans en utilisant [] accès? Si la taille du massif sera modifiée, par exemple à 123, comment trouver l'élément 122?

PS: Je ne veux pas utiliser [] parce que cette méthode ne fonctionne pas ... d[-1] check

Merci.

Répondre

1

utilisez deque :: at.

d.at(121)

+0

Vous dites de vérifier comme ça? - 'd.at (d.size() - 1)'? – mosg

+0

Oui. Et dans le cas où d.size() == 0 il doit y avoir une exception –

+0

J'ai résolu cette solution dans l'autre sens, sans utiliser la STL, mais avec l'aide de la logique du programme. De toute façon merci. – mosg

0

Si vous voulez dire un contrôle d'exécution en cas de jeter hors d'accès lié, vous pouvez utiliser :: à (pos). Si vous voulez dire que d [-1] est le dernier élément, d [-2] l'avant-dernier et ainsi de suite (a-la Python) alors vous devez coder votre propre fonction (éventuellement le modèle) pour cela.

+0

Non, j'ai besoin d'une méthode pour obtenir l'élément 'second-last' de deque-array qui pourrait être de taille différente ... – mosg

Questions connexes