Название: Матрица из QVector Отправлено: danius от Март 08, 2006, 22:15 Извиняйте если уже где-то звучало. При пользовании STL был примерно такой фрагмент:
в определении класса: Код: vector<vector<int> > ground; в конструкторе: Код: ground.assign(nrow, ncol); Как бы можно было получить матрицу из вектора с помощью QTL. Вопрос в том, что метода QVector::assign в QTL нет, можно попробовать resize, но выходит довольно громоздко (у меня :( ). Может кто уже сталкивался с подобным. Спасибо. Название: Матрица из QVector Отправлено: Steven_Orko от Март 08, 2006, 23:19 А почему не хочешь использовать MTL(The Matrix Template Library)???
http://www.osl.iu.edu/research/mtl/ Там есть много функций для работы с матрицами ))) Название: Матрица из QVector Отправлено: danius от Март 09, 2006, 10:16 Цитата: "Steven_Orko" Там есть много функций для работы с матрицами ))) Да, очень много :shock: у меня в программе всего две матрицы размером не более 30x40 не очень хотелось бы таскать ради этого с собой такую библиотеку. Хотя вещь стоящая, не знал о ней. добавлено спустя 2 часа 29 минут: Вот нашел еще одну библиотеку libkdegames (из пакета kdegames), есть там файл kgrid2d.h в котором определен шаблонный класс Generic для 'двухмерной сетки', но и там они матрицу раскладывают в вектор по строкам (правда довольно прозрачно это делают). Так что вопрос остается открытым. Название: Матрица из QVector Отправлено: Dendy от Март 09, 2006, 10:18 Qt используют единьІй стиль работьІ с векторами, чтобьІ не возникало путаницьІ, поетому вектор всегда одномерньІй. Но могу предложить такой способ для работьІ с массивами:
Код: QVector< QVector<int> > matrix = QVector< QVector<int> >( 30, QVector<int>( 40 ) ); или Код: matrix = QVector< QVector<int> >( 30, QVector<int>( 40, 7 ) ); // 7 - default value, matrix filled with или Код: matrix.resize( 30 ); Громоздкий конструктор, но работа с такой матрицей как с обьІчной: Код: matrix[3][5] = 123; Кстати, одно из нововведений в новом стандарте С++, которьІй предложил Страуструп - обращение к шаблонньІм классам без повторного указания типа. Название: Матрица из QVector Отправлено: danius от Март 09, 2006, 12:40 У меня было:
Код: template <class T> Но у Dendy гораздо элегантнее :D . Спасибо за помощь Название: Матрица из QVector Отправлено: SLiDER от Март 09, 2006, 13:06 Цитата: "Steven_Orko" А почему не хочешь использовать MTL(The Matrix Template Library)??? http://www.osl.iu.edu/research/mtl/ Там есть много функций для работы с матрицами ))) Немного оффтопика. :) Может кто не знает !!! :shock: Осмелюсь предложить, всем кто пишет числодробилки, посмотреть в сторону библиотеки Blitz++ (http://oonumerics.org/blitz), не пожалеете. Очень хороший пример того как надо писать на С++. :wink: |