crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Проблема с пониманием контейнеров..
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 18.9.2009, 11:42
 
Цитата
Увы, такая возможность существует, но пожалуйста, пользуйтесь ею с максимальной осторожностью.
Вложенные шаблоны не только плохо читаются, но и генерируют огромное количество кода при
расширении. Помните, что при использовании шаблона самого верхнего уровня будут расширены все
шаблоны.


Цитата(Litkevich Yuriy @ 18.9.2009, 12:37) *
из-за этого не рекомендует?

я ж написл это из личного опыта.
я работал с mingw коллега с msvc написал мне класс который надо было использовать.
пришлось переписывать кое что из - за шаблонов.
Litkevich Yuriy Дата 18.9.2009, 11:37
 
Цитата(kwisp @ 18.9.2009, 15:23) *
но рекомендует избегать.
Цитата(kwisp @ 18.9.2009, 15:23) *
...ограничения по переносимости кода.
из-за этого не рекомендует?
kwisp Дата 18.9.2009, 11:23
 
Цитата(Litkevich Yuriy @ 18.9.2009, 11:58) *
почему же, они довольно часто используются, в том числе и тролями.

та вот читаю тут одну книженцию.
Джефри Элджер. С++.
большой шутник могу так сказать.
но эту тему не плохо раскрыл.
использовать можно никто не запрещает, но рекомендует избегать.
в принципе понятно что кода много генериться.
+ из личного опыта могу сказать что разная реализация шаблонов у различных компилятров накладывает некоторые ограничения по переносимости кода.
Andrewshkovskii Дата 18.9.2009, 11:10
  А, понял, возвращает константную ссылку на вложенный контейнер, по-этому добавить и не могу, надо было по [] обращаться.
Вроде так, и вроде понятно!Спасибо:)
Ну я решил использовать такое представление таблиц..да и QVector < QList < QStandrtItem * > > удобно пользоваться вместе с QStandartModel .. :)
А кодю я , на сколько я себя знаю, не очень хорошо , учиться и учиться ещё!:)
Litkevich Yuriy Дата 18.9.2009, 10:58
 
Цитата(kwisp @ 18.9.2009, 12:59) *
а вообще вложенные шаблоны это жесть.
почему же, они довольно часто используются, в том числе и тролями.
kwisp Дата 18.9.2009, 8:59
 
Цитата(Andrewshkovskii @ 18.9.2009, 0:18) *
discards qualifiers

хорошо кодишь раз впервые видишь.
это ты с квалификатором доступа const поимел проблемы.


const T & QVector::at ( int i ) const

а вообще вложенные шаблоны это жесть.
Andrewshkovskii Дата 17.9.2009, 23:18
  Есть такой вот хитрый контейнер :
QVector < QList <QStandardItem * > > distanceMatrixItems;

Это вектор строк таблицы.
Пытаюсь заполнить его вот так :
void Model::setUpDistanceMatrixModel(int parNum)
{
    bool isNum;
    QString * buf= new QString;
    distanceMatrixModel= new QStandardItemModel();
for ( int i=0;i< rowData.size();++i )
     for ( int j=0;j<rowData.at(i).size();++j)
     {
          buf->setNum(rowData.at(i).at(parNum)->text().toInt(&isNum,10)
                           - //minus
                     rowData.at(j).at(parNum)->text().toInt(&isNum,10),10);
         distanceMatrixItems.at(i).push_back(new QStandardItem(*buf));
         buf->clear();
        }
distanceMatrixModel->setHorizontalHeaderLabels(this->vHeaderData);
distanceMatrixModel->setVerticalHeaderLabels(this->vHeaderData);
emit distanceMatrixModelReady(this->distanceMatrixModel);
}


получаю ..
Цитата
D:/clusters/model.cpp:77: error: passing 'const QList<QStandardItem*>' as 'this' argument of 'void QList<T>::push_back(const T&) [with T = QStandardItem*]' discards qualifiers

Честно говорят, впервые вижу такую ошибку, прощу направить на путь истинный, и если ошибка действительно в незнании, подсказать что почитать :)
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 12:34