Russian Qt Forum
Сентябрь 23, 2024, 01:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: двумерный массив  (Прочитано 26280 раз)
thechicho
Гость
« : Февраль 19, 2012, 16:21 »

как создать сабж? (или трехмерный массив... или структуру... хз)

нужно что-то вроде
QMap <int, int, QString> map;

и потом прогнать как-то так
QMapIterator<int, int, QString> i(map);
while (i.hasNext()) {
    i.next();
    qDebug() << i[0] << " " << i[1] << " " << i[2] << endl;
}

или

for (int i = 0; i < map.count(); i++ {
    qDebug() << map[ i ] << " " << map[ i ][0] << " " << map[ i ][1];
}
« Последнее редактирование: Февраль 19, 2012, 16:25 от thechicho » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 19, 2012, 16:37 »

Код
C++ (Qt)
struct X {
 int a;
 int b;
 QString c;
};
 
QVector <X> vec;
 
Да, это было очень сложно.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
thechicho
Гость
« Ответ #2 : Февраль 19, 2012, 16:54 »

но ты справился! Показает язык Веселый
сенкс)
Записан
thechicho
Гость
« Ответ #3 : Февраль 19, 2012, 16:58 »

thread.cpp:43: error: template argument for 'template<class T> class QVector' uses local type 'googlePositionCheckerThread::run()::X'
thread.cpp:43: error:   trying to instantiate 'template<class T> class QVector'
thread.cpp:43: error: invalid type in declaration before ';' token
Записан
thechicho
Гость
« Ответ #4 : Февраль 19, 2012, 17:13 »

http://0xd34df00d.me/logs/chat/qt-for-beginner@conference.jabber.ru/2011/12/20.html
Записан
thechicho
Гость
« Ответ #5 : Февраль 19, 2012, 17:32 »

эээ
а как ща элементы правильно вставить?
прогнать
отсортировать
перемешать (необязательно)
Записан
thechicho
Гость
« Ответ #6 : Февраль 19, 2012, 17:34 »

    X.a = 1;
    X.b = 2;
    X.c = "asdf";
    vec.append(X);

thread.cpp:45: error: expected unqualified-id before '.' token
thread.cpp:46: error: expected unqualified-id before '.' token
thread.cpp:47: error: expected unqualified-id before '.' token
thread.cpp:48: error: expected primary-expression before ')' token
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Февраль 19, 2012, 17:44 »

тебе нужно прочитать одну-две хороших книг по С++, прежде чем писать код.
Записан
thechicho
Гость
« Ответ #8 : Февраль 19, 2012, 17:50 »

ага, а чо не три сразу. по 1к страниц каждую Веселый я летом читал на 1к, нифига не понял, решил практика лучший способ обучения.

еще вопрос

я мешал рандомно
    int randomCount = mt_rand(1, 100);
    for (int i = 0; i < randomCount; i++) {
        std::random_shuffle(keys.begin(), keys.end());
    }

но ща сделал 3 QStringList
и нужно одинаково их перемещать

поделитесь функцией для такой перемешки?

или если структуру с вектором сделать, там есть функция для перемешки?

QStringList a << "1" << "2" << "3";
QStringList b << "4" << "5" << "64";
QStringList c << "bla1" << "bla2" << "bla3";
есть
1 4 "bla1"
2 5 "bla2"
3 64 "bla3"

надо каждый раз рандомный порядок

2 5 "bla2"
1 4 "bla1"
3 64 "bla3"

как-то так
« Последнее редактирование: Февраль 19, 2012, 17:52 от thechicho » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Февраль 19, 2012, 17:54 »

я летом читал на 1к, нифига не понял.

Какую именно? Если не понял, перечитай ещё раз. Если ещё раз не понял - ещё раз перечитай.

решил практика лучший способ обучения.

Плохо решил. Это правило действует только отталкиваясь от теории. Прочитал главу о виртуальных функциях, понял, - сядь, придумай и напиши 5-6 примеров по этой теме. Только в этом случае можно сказать, что практика - лучший способ обучения.
« Последнее редактирование: Февраль 19, 2012, 17:58 от Alex Custov » Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #10 : Февраль 19, 2012, 18:20 »

эээ
а как ща элементы правильно вставить?
прогнать
отсортировать
перемешать (необязательно)
1. void QVector::insert ( int i, const T & value )
2. foreach
3. qSort
4. Вроде нет возможности "из коробки", самому реализовывать надо.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
thechicho
Гость
« Ответ #11 : Февраль 19, 2012, 18:27 »

Alex Custov, я не помню, в нете где-то находил на сайте читал русский перевод. ты других по себе не мерь. я когда сам сделаю, тогда только смогу понять "как оно работает".

// 1. void QVector::insert ( int i, const T & value )
я не понял как верно вставить, ошибки выскакивают. пока в 3 списка сделал. т.е. перемешивание из коробки уже никак, придется придумывать функцию.

Alex Custov, вот если ты такой крутой, две книжки говоришь прочитал по с++ Веселый
давай с коленки функцию для одинаковой перемешки 3 списков?
чо? не шибко твои книги тебе помогли? то-то же Показает язык
Записан
mutineer
Гость
« Ответ #12 : Февраль 19, 2012, 18:54 »

QStringList a << "1" << "2" << "3";
QStringList b << "4" << "5" << "64";
QStringList c << "bla1" << "bla2" << "bla3";
есть
1 4 "bla1"
2 5 "bla2"
3 64 "bla3"

надо каждый раз рандомный порядок

2 5 "bla2"
1 4 "bla1"
3 64 "bla3"

как-то так

Qlist структур. структура состоит из трех QString. И перемешивай этот вектор как хочешь
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #13 : Февраль 19, 2012, 18:59 »

Собственно пример на структуре. Все просто и понятно Улыбающийся
Код:
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QVector>
#include <QStringList>

struct X {
    int a;
    int b;
    QString c;
};

 bool lessThan(const X &x1, const X &x2)
 {
     return x1.a > x2.a;
 }

int main(int argc, char *argv[])
{

    //создание
    QVector<X> vecOfX;
    X x;
    for (int i = 0; i < 100; ++i)
    {

        x.a = i;
        x.b = i+202;
        x.c = QString("bla%0").arg(i+1);
        vecOfX.append(x);
    }
    //вставка
    x.a = 555;
    x.b = 2341;
    x.c = "bla556";
    vecOfX.insert(50, x);

    //прогонка
    foreach (X x1, vecOfX)
    {
        qDebug() << x1.a << x1.b << x1.c;
    }
   
    //сортировка в обратрую сторону по X.a
    qSort(vecOfX.begin(), vecOfX.end(), lessThan);

    foreach (X x1, vecOfX)
    {
        qDebug() << x1.a << x1.b << x1.c;
    }
}
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
thechicho
Гость
« Ответ #14 : Февраль 19, 2012, 19:00 »

а слабо рабочий пример? чот я когда искал (давненько) не нашел в qt функций для перемешки. или даже это прокатит std::random_shuffle(keys.begin(), keys.end()); ?
если да, то это круто. покажи плиз как создать такую структуру и запихать туда значения.
« Последнее редактирование: Февраль 19, 2012, 19:02 от thechicho » Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.347 секунд. Запросов: 23.