![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
__ilya__ |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 57 Регистрация: 19.1.2012 Пользователь №: 3143 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Как вставить один вектор в конец другого.
Как в vector с помощью insert не получается
как-то так можно со стандартным вектором. С QVector не получается, пишет -нет такого прототипа использую Qt4.8 Сообщение отредактировал __ilya__ - 10.2.2013, 22:54 |
|
|
![]() |
Авварон |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 99 Регистрация: 26.4.2009 Пользователь №: 709 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
алгоритм сортировки std::map работает всегда одинаково (впрочем, как и у QMap), повлиять на эту работу без предиката невозможно. Поэтому непонятна фраза про "так,чтобы он оставался". И как можно сравнивать вектор и мап, непонятно ) Мы же про вектор говорим вроде Для черно-красного дерева действтительно нет разницы, так как оно остается сбалансированным. А вот QMap вроде как не имеет этого свойства и при "специально" подобранных элементах можно получить линейную скорость поиска (хотя тут могу быть и не прав, не разбираюсь в скип-листах). Но вы правы, давайте продолжим рассматривать вектор ![]() копирование и сдвиг произойдёт гораздо быстрее, чем переаллокация. Несоизмеримо Я прогнал тест с преаллоцированным размером на 10^9 элементов, результаты еще интереснее: при добавлении в конец - std::vector в 4 раза быстрее, чем QVector и чуть-чуть опережает QList при вставке в случайное место - std::vector хуже на порядок (0.0023 для QList, 0.0024 для QVector, 0.023 (в десять раз медленнее!) для std::vector), при вставке в начало - std::vector на 3 (!) порядка (!) хуже QList'а , на 1 порядок хуже, чем QVector Правда, следует понимать, что эти цифры возможны благодаря тому, что QList/QVector "знают" о том, что QString (и другие Qt классы) используют Корову, и можно применять memmove вместо копирующего/мувающего конструкторов. Скорее всего, при использовании обычных классов или структур std:: типы будут быстрее; однако ничто не мешает переписать свою структуру на Корову или тупо использовать указатель. Сообщение отредактировал Авварон - 15.2.2013, 17:22 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 9:58 |