Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
13 ноября 2017 г. 10:35

QVector c неуказанным количеством элементов

QVector

При такой записи все данные записываются в [0] элемент вектора. Как Записывать все не в один, а в разные элементы?

 QVector<double>*Open1= new QVector<double>;    Open1->append(18); Open1->append(20); Open1->append(23); qDebug() <<  Open1[0];
19
  • 13 ноября 2017 г. 10:57

Что значит в разные?
Если вы хотите по порядку закидывать в вектор то лучше юзать push_back хотя и append работает.
Попробуйте этот код, у вас должно работать

    QVector<double> *Open1= new QVector<double>;
    Open1->push_back(2.5);
    Open1->push_back(4.6);
    Open1->append(5.3);

    for (int i = 0; i <= Open1->size(); ++i)
    {
        std::cout << Open1->at(i) << std::endl;
    }
0

Тоже в 0 ячейку записывает.

Скажите пожалуйста, std::vector вычисляются быстрее, нежели QVector?
0

Что за....

Если вы в куче выделяете память через new, то следующее даже работать не будет как требуется
qDebug() <<  Open1[0];
Я уже говорил вам, что если память выделена в куче, то нужно использовать метод at()
qDebug() <<  Open1->at(0);
Далее, если Вам не нравится, что запись ведётся в ячейку 0, то Вам придётся с этим смириться , поскольку ни одному опытному программисту не понравится, когда он увидит, что под индексом 0 находится мусор, потому, что вам не нравится считать с 0.
При такой записи все данные записываются в [0] элемент вектора
Может перефразируете? при таком способе записи информации в 0 элемент добавляется только первый добавленный элемент, а остальные добавляются по порядку.
 
В общем вы делаете проблему на пустом месте. Никто так не пишет, как вы хотите.

Для Django рекомендую VDS-хостинг TIMEWEB

0

Так вы не хотите писать в 0 ячейку? Это что то странное. Если вы запишите в 1 ячейку то что у вас будет в 0 ячейке?
Вот подумайте и скажите.

0

Я думал писать по очереди, сначала в 0, затем в 1, затем в 2

0
append или push_back так и делают. пишут по порядку.
Понятия не имею, что вы творите в своём коде, что у вас всё пишется в 0-й элемент.

Для Django рекомендую VDS-хостинг TIMEWEB

0

посмотрите пример что я вам привел. Я добавляю элементы через push_back. Вы собрали его? Вы посмотрели вывод в консоли?
Видите что вам вывелось? Все элементы по порядку как и были добавленны. Это о чем говорит? О том что push_back добавлял с начала в 0 потом в 1 ячейку.

0

Я написал также , как  и вы. Очень странно выходит. Вот скрин, я не вру.

0

У тебя там в коде Out of Range. Сам тоже скомпилируй что написал в Debug сборке. Проверку на выход за размер вектора в цикле неправильно написал.

Для Django рекомендую VDS-хостинг TIMEWEB

0

А вы всё-таки приложите скриншот.

Для Django рекомендую VDS-хостинг TIMEWEB

0

Извиняюсь, не приложился сразу

0

А правда, что при работе с большими объёмами памяти  QVector пораждает баги?

0

При кривых руках баги пораждаются чаще.


Всё правильно он вам выводит... память выделена в куче. с оператором [0] будет указатель на объект QVector, который выведет всю информацию о вектора и всех его трёх элементах... А не конкретно на первый элемент QVector.

Сколько раз мне ещё повторить вам, чтобы до вас дошло, что если выделяете память в куче, то доступ к элементам надо делать через метод at()?

QVector<double>*Open1= new QVector<double>;   
Open1->append(18); 
Open1->append(20); 
Open1->append(23); 

qDebug() <<  Open1->at(0);

Для Django рекомендую VDS-хостинг TIMEWEB

0

И вообще... без особой надобности никто не выделяет память через метод new для QVector или std::vector

Для Django рекомендую VDS-хостинг TIMEWEB

0

0 в вашем случаи это начало вектора которое содержит все элементы.
Вам же выше написали, чтоыб получить инфу по конкретному элементу надо через at() делать.

0

Да, так заработало. Спасибо.

А вы при больших объемах данных работаете с std::vector или QVector?
0

Работаю. Проблем не наблюдается. Максимум вопросы производительности при сложных алгоритмах, но это извечная проблема любой разработки и любых контейнеров.

Для Django рекомендую VDS-хостинг TIMEWEB

0

По факту это одно и тоже.
разница в том что QVector это вектор переработанный для совместимости с другими отьектами и методами Qt.
Он имеет почти теже самые методы что и стандартный вектор std::vector
Если пишите проект на Qt то используете свой вектор.
Если пишите например консольное приложение без использования Qt то юзаете стандартный.

0

спасибо

0

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
12 декабря 2018 г. 18:49
Yaroslav Chernetskyi

Qt - Тест 001. Сигналы и слоты

  • Результат:31баллов,
  • Очки рейтинга-10
12 декабря 2018 г. 6:19
nikbobrecov

Qt - Тест 001. Сигналы и слоты

  • Результат:57баллов,
  • Очки рейтинга-2
11 декабря 2018 г. 18:59
Feniks3000

C++ - Тест 003. Условия и циклы

  • Результат:71баллов,
  • Очки рейтинга1
Последние комментарии
11 декабря 2018 г. 21:01
Евгений Легоцкой

Не знаю, какой-там конкретно эффект и если честно не хочется fl studio ради того, чтобы посмотреть устанавливать, но из того, что увидел в интернете. Предполагаю, что то, что вы хотите с...
11 декабря 2018 г. 19:25
Vlad15007

Подскажите пожалуйста ( я новичок совсем)Можно ли организовать спрайт без этого окошка (как в fl studio fruity dance)?
11 декабря 2018 г. 15:06
Евгений Легоцкой

Что интересно, если написать так from <application_name>.<module_name> import <filename> ,то PyCharm сносит крышу, если разрабатываешь в рамках проекта приложение, ко...
11 декабря 2018 г. 14:52
Илья Чичак

Тут мне тоже есть что сказать=) Сами разрабы советуют импортировать следующим образом: from <application_name> import <module_name> Стоит избегать from . import &l...;
11 декабря 2018 г. 14:28
Евгений Легоцкой

Твоя правда. Согласен. Свои миграции храню в репозитории. На продакшене только выполняю обновление структуры базы данных, после тестирования на дев сервере конечно (читай локальная машина разр...
Сейчас обсуждают на форуме
12 декабря 2018 г. 17:52
Михаиллл

Оказывается оно все переводит в нижний регистр и нужно так писать: SearchTableModel->setTable("\"Test2\"");
12 декабря 2018 г. 16:32
Булат Гиниятов

Допустим в MyObject *myobject = new MyObject; есть метод start(){while(aaa){////////////////}} Как мне обратиться к методу stop(){aaa=false;} ? Соответственно по...
12 декабря 2018 г. 16:28
xintrea

Как выяснилось в этом обсуждении: Отправка Email из Android в Qt для отправки Email в Android необходимо делать Java-метод, который и будет отправлять email. И этот Java-мет...
12 декабря 2018 г. 15:35
lynx

если кому будет вдруг нужно, подумал я над предложением Евгения Но думаю, что проще какой-то функционал дополнить для TableView из Qt Quick Controls 2. вообще берем стандарт...
12 декабря 2018 г. 13:49
Евгений Легоцкой

но у меня нет времени учиться ВЕЧНО давайте без истерик, вы это говорите человеку, который всю жизнь учился, учится и будет учиться, и в программировании всегда так, или учишься и...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы