Например, как заполнить двумерный вектор по какими-нибудь числами и чтобы при выводе они стояли в строки?
Работаю на с++.
Другие языки программирования и технологии
Как пользоваться двумерными векторами?
Вариантов всяких тьма, исходя из возможностей задания, инициализации и редактирования самого вектора. Например, "самостоятельное" задание матрицы:
std::vector<std::vector<int>> v = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8} };
Ввод размеров матрицы с клавиатуры и создание матрицы размером n x m, где все элементы - нули:
size_t n, m;
std::cin >> n >> m;
std::vector<std::vector<int>> v(n, std::vector<int>(m, 0));
Заполнение изначально пустой матрицы "на ходу":
std::vector<std::vector<int>> v;
for (size_t i = 0; i < n; ++i) {
std::vector<int> row; // Создаём пустой текущий ряд
for (size_t j = 0; j < m; ++j) {
int item;
std::cin >> item; // Считываем очередной элемент с клавиатуры
row.push_back(item); // Кладём элемент в конец текущего ряда
}
v.push_back(row); // Кладём заполненный текущий ряд в конец матрицы
}
Варианты вывода, в отличие от вариантов ввода, менее разнообразны. Например, как и с обычными массивами (если не знаем размер вектора, можно его получить, вызвав метод size):
for (size_t i = 0; i < v.size(); ++i) {
for (size_t j = 0; j < v[i].size(); ++j)
std::cout << v[i][j] << ' ';
std::cout << std::endl;
}
Вариант с выводом в range-based for:
for (auto& row : v) {
for (auto& item : row)
std::cout << item << ' ';
std::cout << std::endl;
}
Вывод через итераторы:
for (auto rowIt = v.begin(); rowIt < v.end(); ++rowIt) {
for (auto colIt = rowIt->begin(); colIt < rowIt->end(); ++colIt)
std::cout << *colIt << ' ';
std::cout << std::endl;
}
std::vector<std::vector<int>> v = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8} };
Ввод размеров матрицы с клавиатуры и создание матрицы размером n x m, где все элементы - нули:
size_t n, m;
std::cin >> n >> m;
std::vector<std::vector<int>> v(n, std::vector<int>(m, 0));
Заполнение изначально пустой матрицы "на ходу":
std::vector<std::vector<int>> v;
for (size_t i = 0; i < n; ++i) {
std::vector<int> row; // Создаём пустой текущий ряд
for (size_t j = 0; j < m; ++j) {
int item;
std::cin >> item; // Считываем очередной элемент с клавиатуры
row.push_back(item); // Кладём элемент в конец текущего ряда
}
v.push_back(row); // Кладём заполненный текущий ряд в конец матрицы
}
Варианты вывода, в отличие от вариантов ввода, менее разнообразны. Например, как и с обычными массивами (если не знаем размер вектора, можно его получить, вызвав метод size):
for (size_t i = 0; i < v.size(); ++i) {
for (size_t j = 0; j < v[i].size(); ++j)
std::cout << v[i][j] << ' ';
std::cout << std::endl;
}
Вариант с выводом в range-based for:
for (auto& row : v) {
for (auto& item : row)
std::cout << item << ' ';
std::cout << std::endl;
}
Вывод через итераторы:
for (auto rowIt = v.begin(); rowIt < v.end(); ++rowIt) {
for (auto colIt = rowIt->begin(); colIt < rowIt->end(); ++colIt)
std::cout << *colIt << ' ';
std::cout << std::endl;
}
vector < vector < int > >
Mydar Annakulyyew
Мне интересно как там по мерностям ориентироваться.
Похожие вопросы
- Алгоритмы стандартной библиотеки шаблонов. Вектора в C++.
- Работа с математическими векторами в программировании (Основы)
- Сортировка вектора обьектов класса по 1 из аттрибутов.
- Вот логотип нарисовал. Буду переводить в вектор. Оцените по 10 бальной шкале :)
- Что такое вектор и что должен содержать класс вектора? (С++)
- Паскаль! Даны векторы: a={xn}, b={yn}, c={zn}, d={dn}. Построить матрицу К, сторонами которой являются упорядочены в
- C++ Сортировка в сортировке вектора экземпляров структуры
- Векторы в Си
- помогите с программой!!! (Си) Двумерный массив+строки
- Pascal. Двумерный массив
std::vector<std::vector> v(n, std::vector(m, 0));
vector находится в параметрах вектора?