QVector класы контейнерлік сыныптарға жатады және индекс бойынша элементтерге қол жеткізуді, сондай-ақ ыңғайлы болу үшін бірқатар қосымша әдістерді қамтамасыз етеді.
QVector класының данасы негізінен нысандардың бір өлшемді массиві болып табылады. Екі өлшемді массивді Вектор ретінде көрсеткіңіз келсе, QVector данасын жасауға болады, онда QVector. басқа даналары болады.
QVector бар бір өлшемді массив
Алдымен, int: типті бір өлшемді массивді Векторға сақтайық
QVector <int> myVector; int massive[4] = {1, 2, 3, 4}; for(int i = 0; i < 4; i++) { myVector.push\_back(massive[i]); qDebug() << "Value " << i << ": " << myVector.value(i); }
Және qDebug() шығысын қараңыз:
Value 0 : 1 Value 1 : 2 Value 2 : 3 Value 3 : 4
QVector ішіндегі 2D массиві
Ал енді Векторға int типті екі өлшемді массивті салайық:
QVector <QVector <int> > myVector; int massive[4][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} }; for(int i = 0; i < 4; i++) { QVector<int> tempVector; for(int j = 0; j < 4; j++) { tempVector.push\_back(massive[i][j]); qDebug() << "Value " << j << ": " << tempVector.value(j); } myVector.push\_back(tempVector); qDebug() << "myVector " << i << ": " << myVector.value(i); }
Және qDebug() шығысын қараңыз:
Value 0 : 1 Value 1 : 2 Value 2 : 3 Value 3 : 4 myVector 0 : QVector(1, 2, 3, 4) Value 0 : 5 Value 1 : 6 Value 2 : 7 Value 3 : 8 myVector 1 : QVector(5, 6, 7, 8) Value 0 : 9 Value 1 : 10 Value 2 : 11 Value 3 : 12 myVector 2 : QVector(9, 10, 11, 12) Value 0 : 13 Value 1 : 14 Value 2 : 15 Value 3 : 16 myVector 3 : QVector(13, 14, 15, 16)
QVector бар 2D массивтерінің массиві
Егер сіз барлық екі өлшемді массивтерді қайтадан Vector , ішінде сақтағыңыз келсе, оны келесідей орындауға болады:
QVector <QVector <QVector <int> > > myVector; int massive[4][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} }; QVector <QVector <int> > matrix; for(int i = 0; i < 4; i++) { QVector<int> tempVector; for(int j = 0; j < 4; j++) { tempVector.push\_back(massive[i][j]); qDebug() << "Value " << j << ": " << tempVector.value(j); } matrix.push\_back(tempVector); qDebug() << "matrix row " << i << ": " << matrix.value(i); } myVector.push\_back(matrix); qDebug() << "myVector: " << myVector.value(0);
Және qDebug(): шығысын қараңыз
Value 0 : 1 Value 1 : 2 Value 2 : 3 Value 3 : 4 matrix row 0 : QVector(1, 2, 3, 4) Value 0 : 5 Value 1 : 6 Value 2 : 7 Value 3 : 8 matrix row 1 : QVector(5, 6, 7, 8) Value 0 : 9 Value 1 : 10 Value 2 : 11 Value 3 : 12 matrix row 2 : QVector(9, 10, 11, 12) Value 0 : 13 Value 1 : 14 Value 2 : 15 Value 3 : 16 matrix row 3 : QVector(13, 14, 15, 16) myVector: QVector(QVector(1, 2, 3, 4), QVector(5, 6, 7, 8), QVector(9, 10, 11, 12), QVector(13, 14, 15, 16))
Қорытынды
Соңында, екі матрица мысалында векторлармен және массивтермен жұмыс істеудің тағы бір жолы. бұл жоғарыда аталған әдістерден біршама ерекшеленеді. Бұл жағдайда матрицада немесе екі өлшемді массивте бір
QVector болады
QVector <QVector <int *> > matrixList; QVector <int *> matrix1; QVector <int *> matrix2; int massive1[2][4] = { {1,2,3,4}, {5,6,7,8} }; int massive2[2][4] = { {9,10,11,12}, {13,14,15,16} }; qDebug() << "Matrix 1"; for(int i = 0; i < 2; i++) { matrix1.push\_back(massive1[i]); for(int j = 0; j < 4; j++) { qDebug() << "[" << i << "]" << "[" << j << "]" << matrix1.value(i)[j]; } } qDebug() << "Matrix 2"; for(int i = 0; i < 2; i++) { matrix2.push\_back(massive2[i]); for(int j = 0; j < 4; j++) { qDebug() << "[" << i << "]" << "[" << j << "]" << matrix2.value(i)[j]; } } matrixList.push\_back(matrix1); matrixList.push\_back(matrix2); qDebug() << "Matrix 1 from matrixList"; for(int i = 0; i < 2; i++) { for(int j = 0; j < 4; j++) { qDebug() << "[" << i << "]" << "[" << j << "]" << matrixList.value(0).value(i)[j]; } } qDebug() << "Matrix 2 from matrixList"; for(int i = 0; i < 2; i++) { for(int j = 0; j < 4; j++) { qDebug() << "[" << i << "]" << "[" << j << "]" << matrixList.value(1).value(i)[j]; } }
Және qDebug(): шығысын қараңыз
Matrix 1 [ 0 ] [ 0 ] 1 [ 0 ] [ 1 ] 2 [ 0 ] [ 2 ] 3 [ 0 ] [ 3 ] 4 [ 1 ] [ 0 ] 5 [ 1 ] [ 1 ] 6 [ 1 ] [ 2 ] 7 [ 1 ] [ 3 ] 8 Matrix 2 [ 0 ] [ 0 ] 9 [ 0 ] [ 1 ] 10 [ 0 ] [ 2 ] 11 [ 0 ] [ 3 ] 12 [ 1 ] [ 0 ] 13 [ 1 ] [ 1 ] 14 [ 1 ] [ 2 ] 15 [ 1 ] [ 3 ] 16 Matrix 1 from matrixList [ 0 ] [ 0 ] 1 [ 0 ] [ 1 ] 2 [ 0 ] [ 2 ] 3 [ 0 ] [ 3 ] 4 [ 1 ] [ 0 ] 5 [ 1 ] [ 1 ] 6 [ 1 ] [ 2 ] 7 [ 1 ] [ 3 ] 8 Matrix 2 from matrixList [ 0 ] [ 0 ] 9 [ 0 ] [ 1 ] 10 [ 0 ] [ 2 ] 11 [ 0 ] [ 3 ] 12 [ 1 ] [ 0 ] 13 [ 1 ] [ 1 ] 14 [ 1 ] [ 2 ] 15 [ 1 ] [ 3 ] 16
Помогите пожалуйста с вектором, не имеющим ограничений по количеству элементов. Создаю и добавляю элементы, пока не ругается компилятор.
Выделили память в куче. Обращаться к элементам нужно так.