Динамические массивы в stl

240
09 февраля 2020, 13:20

Хочу создать квадратную матрицу с помощью stl и чтобы пользователь сам заполнял массив. Пока код такой:

#define _CRT_SECURE_NO_WARNINGS 
#include <iostream> 
#include <stdio.h> 
#include <conio.h> 
#include <vector>
#include <string>
using namespace std;
int main () {
    setlocale(LC_ALL, "Rus");
    int e;
    cin >> e;
    vector<vector<int> > e;
    e.push_back(vector<int>());
    for (int i = 0; i < e.size(); i++) {
        cout << e[i] << " ";
    }
    cout << endl;
    _getch();
return 0;
} 

Пишет ошибки над е "выражение должно иметь тип класса" и где е[i] - выражение должно иметь тип указателя на объект.

Были разные ошибки, брала часть решений c этого сайта хд Но так и до конца не поняла как создать двумерный массив, чтобы потом запихнуть туда цикл на проверку количества введенных строк и столбцов.

Было бы классно еще где можно прочитать более подробную информацию об этой библиотеке, тк там еще есть продолжения задания хд

Answer 1

Имена переменных в программе должны быть разными. Зачем Вы пишите:

int e;
...
vector<vector<int>> e;

Для начала измените названия переменных, можно даже на более звучащие имена.

Строкой e.push_back(vector<int>()); Вы добавляете пустую строку в вашу "матрицу", вместо того, чтобы инициализировать её. Попробуйте для инициализации добавить несколько строк и отдельно заполнить каждый элемент, например так:

vector<vector<int>> v(rowCount);  // создадим сразу rowCount строк

for (int i = 0; i < v.size(); i++)         // перебираем строки
{
    v[i].resize(colCount);                 // расширяем i-ую строку до размера colCount
    for (int j = 0; j < v[i].size(); j++)  // перебираем элементы i-той строки
    {
        cin >> v[i][j];                    // заполняем элемент i-той строки j-ого столбца
    }
}

Для вывода нельзя использовать:

cout << v[i];

В этом случае Вы пытаетесь вывести весь вектор-строку, в то время как ваша программа не умеет этого делать. Следовательно, Вам нужно перебрать каждый элемент. Вывод на экран аналогичен вводу. Используйте вложенные циклы, как в примере с вводом.

По поводу "почитать" пару полезных ссылок:

  1. cplusplus.com/vector
  2. en.cppreference.com/container/vector
READ ALSO
Cделать меню адаптивным в карусельке Bootstrap

Cделать меню адаптивным в карусельке Bootstrap

Нужно сделать меню и текст адаптивным и сохранить в том же порядке что он сейчас( текст ровно между кнопок скрола и меню именно вверху в карусельке),...

284
Криво загружается меню на сайте

Криво загружается меню на сайте

Проблема в том, что при загрузке сайта на некоторое время до полной загрузки меню без стилей появляется в верхнем левом углуВ чем могут быть...

300