383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
1 | |
QVector::reserve() + std::vector::reserve() и добавление в начало24.08.2013, 23:09. Показов 3543. Ответов 33
Метки нет (Все метки)
Если зарезервировать в новосозданном векторе место, а затем добавлять объекты классов в начало - будет ли эффективнее вставка? Или предварительная резервация эффективна только для push_back() ?
Прошу ответить и о QVector и о std::vector. спасибо! Ps. Думаю, в std::vector вставка в начало по своей природе неэффективна, но может в QVector тролли что-то мутнули
0
|
24.08.2013, 23:09 | |
Ответы с готовыми решениями:
33
Std::vector/QVector в классе или std::vector/QVector классов? Разница между resize и reserve Двумерный вектор. Не работает reserve() Реализация функций reserve и clear для вектора |
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
|
25.08.2013, 00:03 | 2 |
А зачем вставлять именно в начало? Объекты все равно должны будут сдвигаться. std::deque тогда лучше использовать
2
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
25.08.2013, 00:29 [ТС] | 5 |
Можно, конечно, в конец, но неудобно потом будет с реверсивными итераторами и т.д.
Я использую Qt, поэтому вряд ли хорошо будет смешивать std:: и Qt контейнеры (или все-таки не так страшно? ). А за идею замерить спасибо, обязательно попробую. Nekto, я и забыл за очередь. Спасибо.
0
|
25.08.2013, 00:50 | 7 |
Это когда это вставка в начало в векторе была эффектива ?
Добавлено через 1 минуту А что именно неудобно ? По моему их и делали для того что бы было удобно.
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
25.08.2013, 00:50 [ТС] | 8 |
Вообще-то я вставляю символы в QString Я заодно хотел узнать и о контейнерах вообще.
Так имеет смысл делать reserve() В QString, при вставке в начало? Вставляться будет максимум до 50 символов, в среднем - около 20. Следует ли извращаться с оптимизацией? [Здесь цитата Д.Кнута] То что я вставляю символы в QString
0
|
Jupiter
|
25.08.2013, 00:56
#10
|
0
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
|
25.08.2013, 00:57 | 11 |
вставка в начало вектора всегда неэффективна. для таких целей существует deque
в таком случае можно вставлять в конец и потом реверсить* реверсить когда нужно использовать данные, хотя я не знаю что вы там пишите. может быть можно и без этого
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
25.08.2013, 00:59 [ТС] | 14 |
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
25.08.2013, 01:05 [ТС] | 16 |
нет, я вставляю цифры в виде QChar ('1') в начало строки. Так нужно, потому что это результат перевода дробной части числа в определенную систему счисления. Результирующий QString выводится в QLineEdit.
Ну это я так, по аналогии хотел заодно узнать и о других контейнерах. По сути string это тот же вектор, ну если очень абстрагироваться
0
|
25.08.2013, 01:18 | 20 |
Сильно сомневаюсь что числа длинный, а об изврате я и говорю.
Откуда такая информация?
0
|
25.08.2013, 01:18 | |
25.08.2013, 01:18 | |
Помогаю со студенческими работами здесь
20
На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию? Быстрое пошаговое добавление С-массивов в std::vector Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |