М
МишаNov. 13, 2017, 5:35 a.m.

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

QVector

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

 QVector<double>*Open1= new QVector<double>;    Open1->append(18); Open1->append(20); Open1->append(23); qDebug() <<  Open1[0];
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

19
BlinCT
  • Nov. 13, 2017, 5:57 a.m.

Что значит в разные?
Если вы хотите по порядку закидывать в вектор то лучше юзать 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;
    }
    М
    • Nov. 13, 2017, 6:01 a.m.

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

    Скажите пожалуйста, std::vector вычисляются быстрее, нежели QVector?
      Evgenii Legotckoi
      • Nov. 13, 2017, 6:15 a.m.

      Что за....

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

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

          М
          • Nov. 13, 2017, 6:24 a.m.

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

            Evgenii Legotckoi
            • Nov. 13, 2017, 6:27 a.m.
            append или push_back так и делают. пишут по порядку.
            Понятия не имею, что вы творите в своём коде, что у вас всё пишется в 0-й элемент.
              BlinCT
              • Nov. 13, 2017, 6:30 a.m.

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

                М
                • Nov. 13, 2017, 6:30 a.m.

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

                  Evgenii Legotckoi
                  • Nov. 13, 2017, 6:33 a.m.

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

                    Evgenii Legotckoi
                    • Nov. 13, 2017, 6:33 a.m.

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

                      М
                      • Nov. 13, 2017, 6:37 a.m.

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

                        М
                        • Nov. 13, 2017, 6:40 a.m.

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

                          Evgenii Legotckoi
                          • Nov. 13, 2017, 6:52 a.m.
                          • (edited)

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


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

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

                          QVector<double>*Open1= new QVector<double>;   
                          Open1->append(18); 
                          Open1->append(20); 
                          Open1->append(23); 
                          
                          qDebug() <<  Open1->at(0);
                            Evgenii Legotckoi
                            • Nov. 13, 2017, 6:54 a.m.
                            • (edited)

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

                              BlinCT
                              • Nov. 13, 2017, 6:59 a.m.

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

                                М
                                • Nov. 13, 2017, 7:01 a.m.

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

                                А вы при больших объемах данных работаете с std::vector или QVector?
                                  Evgenii Legotckoi
                                  • Nov. 13, 2017, 7:04 a.m.

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

                                    BlinCT
                                    • Nov. 13, 2017, 7:08 a.m.

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

                                      М
                                      • Nov. 13, 2017, 7:11 a.m.

                                      спасибо

                                        Comments

                                        Only authorized users can post comments.
                                        Please, Log in or Sign up
                                        AD

                                        C ++ - Test 004. Pointers, Arrays and Loops

                                        • Result:50points,
                                        • Rating points-4
                                        m

                                        C ++ - Test 004. Pointers, Arrays and Loops

                                        • Result:80points,
                                        • Rating points4
                                        m

                                        C ++ - Test 004. Pointers, Arrays and Loops

                                        • Result:20points,
                                        • Rating points-10
                                        Last comments
                                        i
                                        innorwallNov. 13, 2024, 11:03 p.m.
                                        How to make game using Qt - Lesson 3. Interaction with other objects what is priligy tablets What happens during the LASIK surgery process
                                        i
                                        innorwallNov. 13, 2024, 8:09 p.m.
                                        Using variables declared in CMakeLists.txt inside C ++ files where can i buy priligy online safely Tom Platz How about things like we read about in the magazines like roid rage and does that really
                                        i
                                        innorwallNov. 11, 2024, 10:12 p.m.
                                        Django - Tutorial 055. How to write auto populate field functionality Freckles because of several brand names retin a, atralin buy generic priligy
                                        i
                                        innorwallNov. 11, 2024, 6:23 p.m.
                                        QML - Tutorial 035. Using enumerations in QML without C ++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
                                        i
                                        innorwallNov. 11, 2024, 3:50 p.m.
                                        Qt/C++ - Lesson 052. Customization Qt Audio player in the style of AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
                                        Now discuss on the forum
                                        i
                                        innorwallNov. 14, 2024, 12:39 a.m.
                                        добавить qlineseries в функции Listen intently to what Jerry says about Conditional Acceptance because that s the bargaining chip in the song and dance you will have to engage in to protect yourself and your family from AMI S…
                                        i
                                        innorwallNov. 11, 2024, 10:55 a.m.
                                        Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                                        9
                                        9AnonimOct. 25, 2024, 9:10 a.m.
                                        Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                                        Follow us in social networks