doublench21
@doublench21

Как динамически вставлять элементы в двумерный вектор?

#include <string>
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, const char *argv[]) {
  vector<vector<int>> matrix;

  ifstream in("/Users/doublench/Documents/graph/breadth-first "
              "search/breadth-first search/input.txt");
  string line;

  for (int i = 0; getline(in, line); i++) {
    for (int j = 0; j < line.size(); j++) {
      // тут хорошо бы вставить в matrix[i][j] = line[j]
    }
  };

  return 0;
}
  • Вопрос задан
  • 9651 просмотр
Решения вопроса 2
ncix
@ncix
Предприниматель
В общем, заполнение двумерного вектора будет выглядеть как-то так.
for (int i = 0; getline(in, line); i++) {
    vector<int> row; //создаем одномерный вектор
    for (int j = 0; j < line.size(); j++) {
        row.push_back(line[j]); //набиваем значениями 
    }
    matrix.push_back(row); запихиваем полученный одномерный вектор в двумерный.
  };
Ответ написан
Комментировать
@Alexander1705
for (int i = 0; getline(in, line); i++) {
    matrix.push_back(vector<int>()); // добавляем новую строку
    for (int j = 0; j < line.size(); j++) {
        matrix[i].push_back(line[j]); // в данную строку добавляем элементы.
    }
};


Хотя по логике у вас должен быть vector<vector<char>> а не vector<vector<int>>.

Если у вас на входе числа, делайте так:
int num;
for (int i = 0; getline(in, line); i++) {
    stringstream ss(line);
    matrix.push_back(vector<int>()); // добавляем новую строку
    while(ss >> num) {
        matrix[i].push_back(num); // в данную строку добавляем элементы.
    }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы