Russian Qt Forum

Разное => Говорилка => Тема начата: thechicho от Февраль 19, 2012, 16:21



Название: двумерный массив
Отправлено: 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];
}


Название: Re: двумерный массив
Отправлено: Пантер от Февраль 19, 2012, 16:37
Код
C++ (Qt)
struct X {
 int a;
 int b;
 QString c;
};
 
QVector <X> vec;
 
Да, это было очень сложно.


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 19, 2012, 16:54
но ты справился! :P :D
сенкс)


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 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


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 19, 2012, 17:13
http://0xd34df00d.me/logs/chat/qt-for-beginner@conference.jabber.ru/2011/12/20.html


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 19, 2012, 17:32
эээ
а как ща элементы правильно вставить?
прогнать
отсортировать
перемешать (необязательно)


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 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


Название: Re: двумерный массив
Отправлено: Alex Custov от Февраль 19, 2012, 17:44
тебе нужно прочитать одну-две хороших книг по С++, прежде чем писать код.


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 19, 2012, 17:50
ага, а чо не три сразу. по 1к страниц каждую :D я летом читал на 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"

как-то так


Название: Re: двумерный массив
Отправлено: Alex Custov от Февраль 19, 2012, 17:54
я летом читал на 1к, нифига не понял.

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

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

Плохо решил. Это правило действует только отталкиваясь от теории. Прочитал главу о виртуальных функциях, понял, - сядь, придумай и напиши 5-6 примеров по этой теме. Только в этом случае можно сказать, что практика - лучший способ обучения.


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


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 19, 2012, 18:27
Alex Custov, я не помню, в нете где-то находил на сайте читал русский перевод. ты других по себе не мерь. я когда сам сделаю, тогда только смогу понять "как оно работает".

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

Alex Custov, вот если ты такой крутой, две книжки говоришь прочитал по с++ :D
давай с коленки функцию для одинаковой перемешки 3 списков?
чо? не шибко твои книги тебе помогли? то-то же :P


Название: Re: двумерный массив
Отправлено: mutineer от Февраль 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. И перемешивай этот вектор как хочешь


Название: Re: двумерный массив
Отправлено: Kurles от Февраль 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;
    }
}


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 19, 2012, 19:00
а слабо рабочий пример? чот я когда искал (давненько) не нашел в qt функций для перемешки. или даже это прокатит std::random_shuffle(keys.begin(), keys.end()); ?
если да, то это круто. покажи плиз как создать такую структуру и запихать туда значения.


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 19, 2012, 19:02
Kurles, вот все бы так на шару код давали, прожил бы я может на пару минут подольше :D
сенкс)


Название: Re: двумерный массив
Отправлено: Пантер от Февраль 20, 2012, 09:21
thechicho, ты лентяй. Форум тебе не школа. Будешь так себя вести, получишь бан.


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 20, 2012, 11:05
вот ты сможешь обосновать, что я лентяй?
я считаю маразмом, читать книгу на 1к страниц, чтобы решить одну проблему (структура 3 элемента).
поэтому самое простое спросить знающих людей, чтобы показали как оно работает.
и параллельно самому искать решение.

я не вижу ничего плохого в своем вопросе, раздел то для новичков.
если не хотите помогать нубам, вас же никто не заставляет.
а угрожать баном? wtf?


Название: Re: двумерный массив
Отправлено: mutineer от Февраль 20, 2012, 11:53
вот ты сможешь обосновать, что я лентяй?

Ты лентяй, потому что не хочешь выучить язык, на котором пытаешься писать


Название: Re: двумерный массив
Отправлено: Пантер от Февраль 20, 2012, 11:55
вот ты сможешь обосновать, что я лентяй?
я считаю маразмом, читать книгу на 1к страниц, чтобы решить одну проблему (структура 3 элемента).
поэтому самое простое спросить знающих людей, чтобы показали как оно работает.
и параллельно самому искать решение.

я не вижу ничего плохого в своем вопросе, раздел то для новичков.
если не хотите помогать нубам, вас же никто не заставляет.
а угрожать баном? wtf?
Раздел для новичков Qt, но не полных чайников и лентяев в программировании. Не хочешь учиться? Твое право, вот только работать за тебя никто не будет.


Название: Re: двумерный массив
Отправлено: Igors от Февраль 20, 2012, 12:25
А все-таки какая удобная формула "лентяй". Сказать прямо "тупой" - нехорошо, обидится. А так вроде умный, даже талантливый, но вот беда - ленивый. И все очень прилично  :)


Название: Re: двумерный массив
Отправлено: Пантер от Февраль 20, 2012, 12:29
А все-таки какая удобная формула "лентяй". Сказать прямо "тупой" - нехорошо, обидится. А так вроде умный, даже талантливый, но вот беда - ленивый. И все очень прилично  :)
лентяй = тупой + не_хочет_исправиться;


Название: Re: двумерный массив
Отправлено: cutwater от Февраль 20, 2012, 14:01
эм... лентяй может быть и умный.

тупой + не хочет исправиться == идиот.


Название: Re: двумерный массив
Отправлено: Bepec от Февраль 20, 2012, 14:54
тупой + не_хочет_исправиться = лентяй.

не_хочет_исправиться + умный = тупой ;)


Название: Re: двумерный массив
Отправлено: mutineer от Февраль 20, 2012, 15:29
тупой + не_хочет_исправиться = лентяй.

не_хочет_исправиться + умный = тупой ;)

итого лентяй = умный + 2 * не_хочет_исправиться  ;D


Название: Re: двумерный массив
Отправлено: andrew.k от Февраль 20, 2012, 16:22
тупой + не_хочет_исправиться = лентяй.

не_хочет_исправиться + умный = тупой ;)

итого лентяй = умный + 2 * не_хочет_исправиться  ;D
Надо по-другому выразить.
умный = лентяй - 2 * не_хочет_исправляться.

Умный - это лентяй, который ни за что не исправится)


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 20, 2012, 19:12
васисдас  :D
может наглый? ;)
другие нубы ничуть не лучше вопросы задают. но типа - я вот счистал счистал, но немножко непонял. пАмагите, пазалуста, разобраться. после ответа - о точно! я почти так и думал! спасиба вам бальшое, вы такой умный!

я преувеличил чуток, но так оно и есть по большему счету. я же чисто кАнкретно спрашиваю :D
я вот не понимаю просто. есть вопрос. знаешь ответ. чо не написать и не объяснить (разжевать)?
если бы вы были евреями, я бы понял :D


Название: Re: двумерный массив
Отправлено: _OLEGator_ от Февраль 20, 2012, 21:09
"Дай человеку удочку и научи ловить, вместо того, чтобы постоянно кормить его рыбой"


Название: Re: двумерный массив
Отправлено: andrew.k от Февраль 20, 2012, 21:25
"Дай человеку удочку и научи ловить, вместо того, чтобы постоянно кормить его рыбой"
Великолепно! В точку. Жаль чичино не поймет.


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 20, 2012, 21:33
ага. я быстрее сам наловлю, чем от вас рыбы дождусь :D


Название: Re: двумерный массив
Отправлено: Igors от Февраль 21, 2012, 09:39
"Дай человеку удочку и научи ловить, вместо того, чтобы постоянно кормить его рыбой"
Рыба быстрее, проще и результат налицо. А с удочкой долго, сложно и неясно наловит ли..
В конце концов все эти Qt классы - ну никак не "удочка"  :)


Название: Re: двумерный массив
Отправлено: Bepec от Февраль 21, 2012, 09:45
Qt классы - это полностью автоматизированная система для вылова и обработки рыбки.

Правда пульт управления у неё многокнопочный и !!! даже разноцветный ;) Вводит в ступор отдельных личностей.

PS пришлось недавно winApi вспоминать - этот жуткий кошмар с 8-10 параметрами, берущимися из таких же функций... Вот WinApi - это как раз параболическая удочка с антенной системой подвески лески.


Название: Re: двумерный массив
Отправлено: _OLEGator_ от Февраль 21, 2012, 09:59
А если сильно по существо - отвечая на такие элементарные вопросы вы создаете прецедент, благодаря которому все новички будут думать, что им читать литературу и изучать основы не обязательно - достаточно задать свои вопросы на форуме и ждать на них ответ.
В последнее время таких тем слишком много развелось, информационный мусор один. Форум не для объяснения основ и элементарных вещей.


Название: Re: двумерный массив
Отправлено: Igors от Февраль 21, 2012, 10:11
PS пришлось недавно winApi вспоминать - этот жуткий кошмар с 8-10 параметрами, берущимися из таких же функций... Вот WinApi - это как раз параболическая удочка с антенной системой подвески лески.
А теперь представьте себе что когда пришлось вернуться к API - о ужас, оно полностью поменялось, и, оказывается, нужно с нуля учить совсем др API. (плюс напр Objective C и.т.п). Именно так происходит на Mac платформе. Так что WinAPI - далеко не худший вариант


Название: Re: двумерный массив
Отправлено: sudo от Февраль 21, 2012, 10:16
Важно то не учить, важно разбираться. Всегда решает именно подход. И тут, если уходить к частностям, можно читать документацию и разбираться или, не разбираясь, задавать вопросы и копипастить


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 21, 2012, 11:33
// Форум не для объяснения основ и элементарных вещей
бугога. раздел для новичком, по-твоему, здесь для того, чтобы о великие кодеры сюда заходили и по велению судьбы и доброте душевной снисходили до того, чтобы ответить на вопрос нуба-нубского ака не лентяя тупого, который по их важному мнению не является слишком нубо-нубским (то бишь о великий кодер сам сходу не может дать ответ на вопрос. не обязательно потому, что вопрос тривиальный  :D). если же о великий кодер может сходу ответить на вопрос, т.к. он учился в универе, где этот вопрос разбирали аж на 3ем курсе, то у него сразу зашкаливает ЧСВ - как же так, ты поганый нуб не знаешь ответа на такой тривиальный вопрос! (для о великого кодера. прим. автора) значит ты не только нуб-нубский, но еще лентяй тупой! фак йех, я умнее чем он (так думает о великий кодер. прим. автора). и о великий кодер пишет свой любимый шаблон ("тебе нужно прочитать одну-две хороших книг по С++, прежде чем писать код."), закрывая при этом глаза ладошкой (*facepalm*).

еще перл - учеными Бобруйска доказано, что если тебе 3.14дор одногруппник не дал списать, от этого ты умнее не становишься. в 100.0000001% случаев.

p.s. вам меня не перетролить :P :D


Название: Re: двумерный массив
Отправлено: thechicho от Февраль 21, 2012, 11:35
// задавать вопросы и копипастить
если будет рабочий пример. я смотрю как он работает и тогда понимаю как оно работает.
т.е. отвечая кодом, вы даете понять человеку, а не оказываете медвежью услугу.
если вы думаете иначе, вы ошибаетесь, выше описано почему ;)


Название: Re: двумерный массив
Отправлено: Пантер от Февраль 21, 2012, 11:38
Напишите мне букву "А", а то я букварь открывал, но там слишком много страниц.
Бан на неделю.


Название: Re: двумерный массив
Отправлено: Bepec от Февраль 21, 2012, 12:26
Свершилось... Я так долго этого ждал ;)



Название: Re: двумерный массив
Отправлено: andrew.k от Февраль 21, 2012, 12:40
Свершилось... Я так долго этого ждал ;)
"И тебя вылечат... и меня вылечат"


Название: Re: двумерный массив
Отправлено: Пантер от Февраль 21, 2012, 12:41
Bepec, andrew.k: может, тоже хотите? ;)


Название: Re: двумерный массив
Отправлено: Bepec от Февраль 21, 2012, 13:04
Только если порознь ;)


Название: Re: двумерный массив
Отправлено: _OLEGator_ от Февраль 21, 2012, 13:40
to Пантер
Благодарю, мера была своевременной. По-другому троллей не научить.


Название: Re: двумерный массив
Отправлено: Alex Custov от Февраль 21, 2012, 13:54
p.s. вам меня не перетролить :P :D

Малыш, этот поток сознания наврятли можно назвать троллингом, даже толстым. Ты даже это не умеешь делать, а поучаешь всех направо и налево.

Т.к. перенесли в говорилку, я всё-таки выскажусь.

Ты не нуб, нужно различать нубов и ламеров. Нубами были все. И те, у кого было немного мозгов, сидели и в поте лица читали литературу, и прошли этот этап и стали начинающими разработчиками. Ламеры же этого не делают, просто потому что для них это слишком сложно, и вообще, книги для лохов, это невежды, которые не хотят обучаться, и считают это чем-то ненормальным, сидеть и ботать книги. Ты - типичный ламер. Биомасса, которая считает, что списывать работы, не читать книги, не изучать чужой код, не практиковаться, не прилагать собственных усилий - это вполне нормально. Ты не нуб, не надо называть себя этим хорошим словом. Ты чучундра, которая не может И НЕ ХОЧЕТ обучаться, понять разницу между char * и char [], и при этом обвиняет ещё посетителей форума в том, что тебе, великому разработчику, какие-то лохи посоветовали читать книгу, да кто они такие...? Нубы заходят на этот форум и могут задавть аналогичные вопросы, и адекватные их них продолжают работать самостоятельно, поэтому им можно ответить даже на примитивный вопрос, потому что ты знаешь, что он будет дальше самообучаться, поняв, что все знания уже есть в виде литературы, которую нужно просто открыть. Ты же ведёшь себя не как нуб, а как типичный ламер - ты вообще не думаешь головой, с любой проблемой ты бежишь на форум, требуя от посетителей её решения. И это происходит постоянно, достаточно посмотреть на твои посты.

Я уж не знаю то ли смеяться то ли плакать от того, что сейчас, в 21-м веке, при наличии интернета и огромного багажа знаний онлайн, который можно получить не выходя из дома, находятся вот такие личности, которые принципиально их не получают, и ещё плюются направо-налево, обвиняя всех вокруг в том, что они не уделяют достаточно внимания тебе, центру Вселенной.

Ты настолько туп, что приходиться даже объяснять кое-какие вещи насчёт книг. Книга даёт тебе понимание твоего инструмента, как он устроен, и как им пользоваться. Ни одна книга не научит мыслить алгоритмически, это достигается только через собственный опыт. А опыт нельзя приобрести, вообще понятия не имея как пользоваться инструментом. Нельзя родиться, сразу встать и побежать. Сперва нужно научиться сидеть, потом ползать, потом ходить, потом бегать. Ты же хочешь не прилагая никаких усилий сразу стать бегуном на стометровку. Тяжело? А что, кто-то говорил, что будет легко?