2016-08-17 484 views
0

QStringワードを配列に入れたいのですが、どうすればいいのか分かりません。 私はこのようなベクターを試してみる:QVectorで2次元のQString配列をQtで作成する

int i = 10; 
int j = 10; 
QVector < QVector < QString> > tableau; 
QString word = "Word"; 
tableau[i][j] = word; 

しかし、それは動作しません。

ASSERT failure in QVector<T>::operator[]: "index out of range" 

ああだからあなたがの文字列配列を作成する方法を私に説明できるのstd ::ベクトルとstd ::文字列を使用してみてくださいしかし、これは

に動作しない持っている: これはエラーメッセージですあなたは、テーブルを作成しようとしていると仮定すると、 おかげ

+3

あなたが0のサイズと容量を持つ 'QVector'を作成している - あなたは、最初の要素でそれを埋めるために必要に'append'を使ってください[公式リファレンス](http://doc.qt.io/qt-5/qvector.html#append) – UnholySheep

答えて

1

単語を置くための2つの次元は(そのためQVector<QVector<T>>が最良の選択ではない)それを最初に初期化する必要があります。

ような何か:

QVector<QVector<QString>> CreateTableau(int sizeX, int sizeY) 
{ 
    QVector<QVector<QString>> result; 
    for (int idx1 = 0; idx1 < sizeX; idx1++) 
    { 
     result.append(QVector<QString>()); 
     for (int idx2 = 0; idx2 < sizeY; idx2++) 
     { 
     result[idx1].append(QString()); 
     } 
    } 
    return result; 
} 

その後、あなたが好きそれを呼び出す:

int i = 10; 
int j = 10; 
QVector<QVector<QString>> tableau = CreateTableau(100, 100); //TODO: replace with appropriate sizes. 
QString word = "Word"; 
tableau[i][j] = word; 
+0

誰かが私を助け、彼は私にこれを完全に働かせます:QVector > tableur(QVector >(10、QVector (10、 ""))); tableur [1] [1] = "Mmot"; qDebug()<< tableur [1] [1]; –

関連する問題