Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

QVector::reserve() + std::vector::reserve() и добавление в начало - C++

24.08.2013, 23:09. Просмотров 1742. Ответов 33
Метки нет (Все метки)

Если зарезервировать в новосозданном векторе место, а затем добавлять объекты классов в начало - будет ли эффективнее вставка? Или предварительная резервация эффективна только для push_back() ?

Прошу ответить и о QVector и о std::vector.
спасибо!

Ps. Думаю, в std::vector вставка в начало по своей природе неэффективна, но может в QVector тролли что-то мутнули
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 23:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос QVector::reserve() + std::vector::reserve() и добавление в начало (C++):

Std::vector/QVector в классе или std::vector/QVector классов? - C++
Доброе время суток! Собственно вопрос в самой теме, есть некий класс class WorkJornal { private: string manager; ...

Разница между resize и reserve - C++
Всем доброе утро! Следующий вопрос не дает мне спать по ночам - в чём таки разница между resize и reserve класса vector?.. Думала, что...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию? - C++
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? - C++
Есть такая функция: void Array::SetStartIndexes(sz3_Arr_t *array) { start_index.reserve(array-&gt;size()); ...

Вывести значения std::vector<std::vector<int*> > - C++
Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3; std::vector&lt;std::vector&lt;int*&gt; &gt; imatrix; //...

33
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.08.2013, 01:05  [ТС] #16
Цитата Сообщение от Avazart Посмотреть сообщение
Это что типа QString как буфер использовать или чЁ?
нет, я вставляю цифры в виде QChar ('1') в начало строки. Так нужно, потому что это результат перевода дробной части числа в определенную систему счисления. Результирующий QString выводится в QLineEdit.
Цитата Сообщение от Avazart Посмотреть сообщение
При чем тут вектор ?
Ну это я так, по аналогии хотел заодно узнать и о других контейнерах. По сути string это тот же вектор, ну
если очень абстрагироваться
0
Avazart
Эксперт С++
7433 / 5472 / 310
Регистрация: 10.12.2010
Сообщений: 24,397
Записей в блоге: 17
25.08.2013, 01:12 #17
Да думаю нет смысла оптимизировать "вывод" тут не вряд ли выиграешь, оптимизировать нужно сам алгоритм расчетов.

Я бы пихал QVector<int>, а затем уже переводил в QString и в QLineEdit
1
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
25.08.2013, 01:14 #18
Цитата Сообщение от gromo Посмотреть сообщение
Так нужно, потому что это результат перевода дробной части числа в определенную систему счисления.
Переводить числа в другую систему счисления через строки? Не глупо ли?
0
Avazart
Эксперт С++
7433 / 5472 / 310
Регистрация: 10.12.2010
Сообщений: 24,397
Записей в блоге: 17
25.08.2013, 01:16 #19
Цитата Сообщение от castaway Посмотреть сообщение
Переводить числа в другую систему счисления через строки? Не глупо ли?
Если числа длинные или еще какой изврат ?

К тому же как я понял QString нужен только для вывода результата, а не для хранения.
0
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
25.08.2013, 01:18 #20
Цитата Сообщение от Avazart Посмотреть сообщение
Если числа длинный или еще какой изврат ?
Сильно сомневаюсь что числа длинный, а об изврате я и говорю.
Цитата Сообщение от Avazart Посмотреть сообщение
К тому же как я понял QString нужен только для вывода результата, а не для хранения.
Откуда такая информация?
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
25.08.2013, 01:24 #21
Цитата Сообщение от Avazart Посмотреть сообщение
Если числа длинный
а что нельзя выбрать соотв. тип для числа?
0
Avazart
Эксперт С++
7433 / 5472 / 310
Регистрация: 10.12.2010
Сообщений: 24,397
Записей в блоге: 17
25.08.2013, 01:26 #22
Цитата Сообщение от castaway Посмотреть сообщение
Откуда такая информация?
Отсюда :
Цитата Сообщение от gromo Посмотреть сообщение
Так нужно, потому что это результат перевода дробной части числа в определенную систему счисления. Результирующий QString выводится в QLineEdit.
0
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.08.2013, 01:26  [ТС] #23
Цитата Сообщение от castaway Посмотреть сообщение
Переводить числа в другую систему счисления через строки? Не глупо ли?
Это пока прототип и чисел unsigned long long + QString пока хватает. Но в дальнейшем хочу расширить для произвольных чисел.
А что бы вы посоветовали для длинной арифметики с произвольной точностью? Я собирался Boos.Multiprecision, но пока это сильно высокооктановая библиотека для меня только начинаю осваивать.
0
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
25.08.2013, 01:28 #24
Цитата Сообщение от Avazart Посмотреть сообщение
Отсюда :
упущено начало
Цитата Сообщение от gromo Посмотреть сообщение
нет, я вставляю цифры в виде QChar ('1') в начало строки. Так нужно, потому что это результат перевода дробной части числа в определенную систему счисления.
0
Avazart
Эксперт С++
7433 / 5472 / 310
Регистрация: 10.12.2010
Сообщений: 24,397
Записей в блоге: 17
25.08.2013, 01:29 #25
Цитата Сообщение от gromo Посмотреть сообщение
А что бы вы посоветовали для длинной арифметики с произвольной точностью?
gmp, mpir, NTL (и еще какая-то либа есть ) если ты про готовое.

А если про учебное так поищи в разделе, не раз подымалась тема длинных чисел.

Пример gmp на C++Builder http://www.cyberforum.ru/blogs/131347/blog488.html
1
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
25.08.2013, 01:30 #26
Цитата Сообщение от gromo Посмотреть сообщение
А что бы вы посоветовали для длинной арифметики с произвольной точностью?
Я бы посоветовал не изобретать велосипед. http://gmplib.org/, http://www.mpfr.org/
Цитата Сообщение от gromo Посмотреть сообщение
Я собирался Boos.Multiprecision, но пока это сильно высокооктановая библиотека для меня только начинаю осваивать.
... только начинаю осваивать что?
1
gromo
25.08.2013, 01:33  [ТС]
  #27

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
только начинаю осваивать что?
Boost.Multiprecision. (Запятую пропустил). Ну а если вас удивляет, что я "осваиваю" библиотеку, то увольте Для меня она сложновата

1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
25.08.2013, 01:35 #28
Цитата Сообщение от gromo Посмотреть сообщение
Это пока прототип и чисел unsigned long long + QString пока хватает. Но в дальнейшем хочу расширить для произвольных чисел.
А что бы вы посоветовали для длинной арифметики с произвольной точностью? Я собирался Boos.Multiprecision, но пока это сильно высокооктановая библиотека для меня только начинаю осваивать.
Если я правильно понял, что ты пытаешься сделать, то мб стоит подумать о хранении в обратном порядке? Т.е. младшие разряды идут первыми.
0
castaway
25.08.2013, 01:36
  #29

Не по теме:

Цитата Сообщение от gromo Посмотреть сообщение
Boost.Multiprecision. (Запятую пропустил).
Да я не об этом.. Мне почему-то показалось что ты с языком С++ не сильно знаком. Зачем прыгать выше ж*пы?)

0
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.08.2013, 01:42  [ТС] #30
Цитата Сообщение от Nekto Посмотреть сообщение
Если я правильно понял, что ты пытаешься сделать, то мб стоит подумать о хранении в обратном порядке? Т.е. младшие разряды идут первыми.
Выше уже была мысль, что оптимизировать "вывод" не стоит, лучше поработать над алгоритмом. Тем более, что там не большие объемы для вывода.

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Мне почему-то показалось что ты с языком С++ не сильно знаком. Зачем прыгать выше ж*пы?)
Вам не показалось)) по-тихоньку ознакамливаюсь, но куда-то прыгать же надо

0
25.08.2013, 01:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2013, 01:42
Привет! Вот еще темы с ответами:

Как изменять размер std::vector<std::vector>? - C++
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: std::vector&lt;std::vector&lt;float&gt;&gt; data; ...

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator> - C++
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я ставлю закладку итератора, ...

Реализация класса MyString. Стандартная библиотека, std::string, std::vector - C++
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и почему ошибка выдается???#include...

Передача функции указатель на элемент std::vector<std::string> - C++
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в качестве параметра указатель на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.