Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
Всегда думал, что std::deque - это подобие std::stack, только FIFO ... сегодня узнал, что std::deque - практически то же самое, что и std::vector, только не понятно чем от него отличается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 12:11 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
Да, очередь queue в общем случае это кольцевой буфер, с динамически изменяемым размером, т.е. хорошо ложиться на std::vector. А для оптимального пере-выделения памяти может использоваться нечто вроде std::list< std::vector<int> >. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 12:27 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
Confused++Всегда думал, что std::deque - это подобие std::stack, только FIFO ... сегодня узнал, что std::deque - практически то же самое, что и std::vector, только не понятно чем от него отличается Отличаются стоимостью вставки и удаления элементов в произольном месте (не в конце). vector - O(N) , где N - число элементов, хранящихся в векторе. deque - O(1) И накладными расходами памяти на хранение элементов. vector - 0 deque - >0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 13:30 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
MasterZivConfused++Всегда думал, что std::deque - это подобие std::stack, только FIFO ... сегодня узнал, что std::deque - практически то же самое, что и std::vector, только не понятно чем от него отличается Отличаются стоимостью вставки и удаления элементов в произольном месте (не в конце). vector - O(N) , где N - число элементов, хранящихся в векторе. deque - O(1) И накладными расходами памяти на хранение элементов. vector - 0 deque - >0 А вы list с deque не путаете? Учитывая, что deque - это либо список массивов, либо массив массивов :) http://alenacpp.blogspot.ru/2006/12/vector-vs-deque.html Отличаются стоимостью вставки и удаления элементов в произольном месте (не в конце). vector - O(N) , где N - число элементов, хранящихся в векторе. deque - O(1 - N) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 13:47 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
list с deque не путаете?, Я может быть немного загрубил оценки, но вот первоисточник http://www.cplusplus.com/reference/deque/deque/erase/ Complexity Linear on the number of elements erased (destructions). Plus, depending on the particular library implemention, up to an additional linear time on the number of elements between position and one of the ends of the deque. http://www.cplusplus.com/reference/deque/deque/insert/ Complexity Linear on the number of elements inserted (copy/move construction). Plus, depending on the particular library implemention, up to an additional linear in the number of elements between position and one of the ends of the deque. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 14:32 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
MasterZivlist с deque не путаете?, Я может быть немного загрубил оценки, но вот первоисточник http://www.cplusplus.com/reference/deque/deque/erase/ Complexity Linear on the number of elements erased (destructions). Plus, depending on the particular library implemention, up to an additional linear time on the number of elements between position and one of the ends of the deque. http://www.cplusplus.com/reference/deque/deque/insert/ Complexity Linear on the number of elements inserted (copy/move construction). Plus, depending on the particular library implemention, up to an additional linear in the number of elements between position and one of the ends of the deque. Ну тут написано, что erase и insert имеют сложность O(M + N), где M - количество удаляемых/вставляемых элементов, а N - количество элементов от одного из концов очереди. Здесь внутренним массивом в std::list/vector< std::vector/array<K, int> > пренебрегают, т.к. K - обычно либо константа, либо не более некоторого небольшого значения. Однако в общем случае я не вижу ограничений в использовании std::vector<int> для std::deque<int>, со сложностью удаления/вставки O(N). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 14:57 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
использовании std::vector<int> для std::deque<int>, со сложностью удаления/вставки O(N), где N - количество элементов в deque (т.е. в vector). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 15:29 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
Confused++Всегда думал, что std::deque - это подобие std::stack, только FIFO ... сегодня узнал, что std::deque - практически то же самое, что и std::vector, только не понятно чем от него отличается Основных отличия два: 1) Совместимость внутреннего представления с простым массивом: вектор совместим, дека - нет); 2) Стоимость вставки в начало: вектор - O(N), дека - O(1). Про накладные расходы MasterZiv уже писал, добавлю только, что с ростом размера контейнера их относительная часть становится совсем мизерной. Саттер еще где-то об этом писал вместе с Майерсом и Александреску. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2013, 21:25 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
ещё раз про O(1). deque устроен как список страниц, каждая из которых представляет собой, грубо говоря, вектор с фиксированным размером. Плюс возможно некий индекс сверху. Вставка -- это поиск страницы и вставка на страницу со сдвигом фиксированного числа элементов (размер страницы / размер элемента). Если не хватает места на странице, в список вставляется новая пустая страница. Удаление -- соответственно обратный процесс. В стандарте прописана возможность для реализации увеличить стоимость до N/2, но в реальности я думаю это никогда не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 11:38 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
MasterZivВ стандарте прописана возможность для реализации увеличить стоимость до N/2, но в реальности я думаю это никогда не происходит. А это именно в стандарте написано или на http://www.cplusplus.com , если в стандарте, то можно цитату? 2003 cpp_standard.pdf Draft_2011-02-28_N3242 Draft_2012-11-02_N3485 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 12:32 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
именно в стандартеА это именно в стандарте написано или на http://www.cplusplus.com , если в стандарте, то можно цитату? Так там из стандарта определения и идут. Мне лично лень искать в стандарте это... Тебе очень надо именно из стандарта, общего понимания не достаточно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 13:15 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
MasterZivещё раз про O(1). deque устроен как список страниц, каждая из которых представляет собой, грубо говоря, вектор с фиксированным размером. Плюс возможно некий индекс сверху. Вставка -- это поиск страницы и вставка на страницу со сдвигом фиксированного числа элементов (размер страницы / размер элемента). Если не хватает места на странице, в список вставляется новая пустая страница. Удаление -- соответственно обратный процесс. В стандарте прописана возможность для реализации увеличить стоимость до N/2, но в реальности я думаю это никогда не происходит.Не, все страницы кроме первой и последней должны быть одинакового размера и полностью заполнены. Так что чтобы вставить/удалить надо сдвигать либо все элементы до конца, либо все элементы до начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 13:19 |
|
||
|
Чем по большому счёту отличается std::deque и std::vector?
|
|||
|---|---|---|---|
|
#18+
Однако, нашёл довольно быстро... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 13:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38404813&tid=2019898]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 289ms |
| total: | 543ms |

| 0 / 0 |
