2017-01-10 2 views
0

У меня есть структура и QList структуры. Основываясь на счете, я хочу создать несколько QList.Создать список динамически в Qt

Для например:

struct Data 
{ 
    QString id; 
    QString name; 
}; 

QList<Data> lst; 

Предположим, если у меня есть 3 значения в LST, я хочу, чтобы создать 3 QList.

for(int i=0;i<=lst.count();i++) 
{ 
    //Declare new list here for each. 
    //Result 3 lists : QList<Data> lst1,QList<Data> lst2,QList<Data> lst3 
} 

Может кто-нибудь скажет мне, возможно ли это в Qt? Есть ли выход?

+0

Да, возможно, что бы вы хотели сделать с этими списками? – demonplus

+0

Одно из решений: составить список списков ... –

+0

@demonplus: я хотел бы заполнить список другими наборами данных на основе различных условий. lst1 будет иметь все данные, где id = 1 (id здесь не уникален). –

ответ

0

Вы не можете объявить переменное число переменных. Вместо этого вы создаете списки (или другие контейнеры).

От вашего комментария (lst1 будет иметь все данные, где id = 1), я бы предложил использовать QMap<int, QList<Data>>. Например.

QMap<int, QList<Data>> lstN; 
QList<Data> lst; 
for(int i=0;i<lst.count();i++) 
{ 
    lstN[lst[i].id] << lst[i]; 
} 

Это дает вам отображение идентификатора в списке Data объектов с этим идентификатором. Например. lstN[1] - это список всех объектов с ID = 1

0

Ну, вы могли бы просто определить

for(int i=0;i<=3;i++) 
{ 
    QList<Data> lst; 
} 

, который будет определять 3 списков, каждый называется lst. Проблема в том, что время жизни каждого ограничено телом цикла. Скорее всего, это не то, что вы хотите.

Я подозреваю, что вам нужен список . Шаблон QList< > является общим, он может содержать любой другой тип, включая другой QList< >. Таким образом, вы получите QList<QList<Data> >

+0

срок службы не должен быть ограничен. Я хочу использовать эти списки для заполнения данных. Как я могу объявить список со списком? Не могли бы вы рассказать? –

+0

Это создаст 4 списка –

Смежные вопросы