Форум программистов, компьютерный форум, киберфорум
Avazart
Войти
Регистрация
Восстановить пароль
Темы блога относятся к программированию на языке С++

В основном для C++Qt (Qt5.1) и C++ Builder (RAD 2009 и RAD XE3)
Оценить эту запись

Старенькое видео по Qt. "Как выжить на минном поле. Советы сапёру - Денис Кормалев"

Запись от Avazart размещена 02.05.2021 в 15:38

Размещено в C++, C++Qt, Python
Показов 727 Комментарии 4
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Аватар для Croessmah
    Наверное, стоит добавить про использование Qt-контейнеров с range-based-for.
    Если в этом цикле мы используем не константный контейнер,
    то контейнер будет "отцеплен" (detach), т.к. range-based-for
    вызовет не константные begin() и end() для получения итераторов.

    C++ (Qt)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    QVector<QString> s1 { "123" };
    auto s2 = s1; //s1 и s2 шарят один контейнер
    qDebug() << s2.isDetached(); //false
     
    qDebug() << "const:";
    const auto & s2cref = s2;
    for (const QString & s: s2cref) { //Проходим по константному контейнеру
        qDebug() << s2.isDetached(); //false
    }
     
    qDebug() << "non const:";
    auto & s2ref = s2;
    for (const QString & s: s2ref) { //Проходим по не константному контейнеру
        qDebug() << s2.isDetached();//true
    }
    Как видно, контейнер в цикле был "отцеплен".
    К слову, на данное использование, имеем предупреждение
    Цитата:
    c++11 range-loop might detach Qt container (QVector)
    Исправляется очень просто - навешиванием квалификатора const,
    например, с помощью qAsConst:
    C++ (Qt)
    1
    2
    3
    
    for (const QString & s: qAsConst(s2ref)) { //Проходим по константному контейнеру
        qDebug() << s2.isDetached();//false
    }
    Запись от Croessmah размещена 02.05.2021 в 21:26 Croessmah вне форума
    Обновил(-а) Croessmah 02.05.2021 в 21:35
  2. Старый комментарий
    Аватар для Avazart
    Да честно говоря я пожалел что запостил ссылку на видео, фиговинький доклад какой-то.
    Но я чет особо докладов по Qt нашел. Видимо стоит рыть на англиском может там более полезные доклады.
    Запись от Avazart размещена 04.05.2021 в 21:28 Avazart на форуме
  3. Старый комментарий
    Аватар для Croessmah
    Сначала запостили, потом посмотрели? )
    Может кому и полезно будет, но в целом, доклад ни о чем.
    Запись от Croessmah размещена 05.05.2021 в 21:07 Croessmah вне форума
  4. Старый комментарий
    Аватар для Avazart
    Да как то так получилось. Сначала смотрел думал что дальше больше толковых вещей, но нет.
    Запись от Avazart размещена 06.05.2021 в 11:39 Avazart на форуме
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.