2010-07-27 5 views
0

Например, у меня есть массив с примерно 10 элементами.Как получить предыдущий элемент из 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; 

Вопрос: как найти 900 элемент, без с использованием [] доступа? Если размер массива будет изменяться, например, до 123, как найти 122 элемента?

PS: Я не хочу использовать [], потому что этот метод не выполняет проверку d[-1] ...

Спасибо.

ответ

1

использование deque :: at.

d.at(121)

+0

Вы говорите, чтобы проверить это? - 'd.at (d.size() - 1)'? – mosg

+0

Да. И в случае d.size() == 0 должно быть исключение –

+0

Я решил это решение другим способом, не используя STL, но с помощью программной логики. В любом случае, спасибо. – mosg

0

Если вы имеете в виду проверку выполнения метания в случае отказа от связанного доступа можно использовать :: в (позах). Если вы имеете в виду, что d [-1] - последний элемент, d [-2] - второй и т. Д. (A-la Python), то для этого вы должны закодировать свою собственную (возможно, шаблонную) функцию.

+0

Нет, мне нужен метод, чтобы получить элемент 'second-last' из deque-array, который может быть с разным размером ... – mosg

 Смежные вопросы

  • Нет связанных вопросов^_^