Я провів 3 різні експерименти, включаючи списки C ++ та вектори.
Ті, хто має вектори, виявилися ефективнішими, навіть коли було задіяно багато вставок посередині.
Звідси виникає питання: в якому випадку списки мають більше сенсу, ніж вектори?
Якщо вектори здаються більш ефективними в більшості випадків, і, враховуючи, наскільки схожі їх члени, то які переваги залишаються для списків?
Створіть N цілих чисел і покладіть їх у контейнер, щоб контейнер залишився відсортованим. Вставлення було виконано наївно, зчитування елементів по одному та вставлення нового прямо перед першим більшим.
З переліком час проходить дах, коли розмірність збільшується, порівняно з векторами.Вставте N цілих чисел у кінці контейнера.
Для списків та векторів час збільшився на той самий порядок, хоча з векторами він був у 3 рази швидшим.Вставте N цілих чисел у контейнер.
Запуск таймера.
Сортуйте контейнер, використовуючи list.sort для списків, і std :: сортування для векторів. Стоп-таймер.
Знову ж таки час збільшується на той самий порядок, але з векторами він в середньому в 5 разів швидше.
Я можу продовжувати виконувати тести і наводити пару прикладів, коли списки виявляться кращими.
Але спільний досвід ви, хлопці, читаючи це повідомлення, може дати більш продуктивні відповіді.
Можливо, ви стикалися з ситуаціями, коли списки було зручніше у використанні чи ефективніше?
list
, Ймовірно , робить краще , якщо ви видаляєте багато елементів. Я не вірю vector
, що коли-небудь поверне пам'ять до системи, поки весь вектор не буде видалений. Також пам’ятайте, що ваш тест №1 не перевіряє час вставки окремо. Це тест, що поєднує пошук і вставку. Це пошук місця, щоб вставити там, де list
повільно. Фактична вставка буде швидшою, ніж векторна.