#include <vector>
using namespace std;
vector<vector<int> > v;
Двумерный динамический массив на vector
Объявляю двумерный массив:
Код:
1. Одномерный вектор можно инициализировать напр
Код:
v.assign(10,2);
//10 элементов со значением 2
//10 элементов со значением 2
Но как тоже самое сделать для двумерного?
2. Заполнять массив можно с помощю прямого обращения v[j]=5;
А как в этом случе выполняется v.push_back(10); Элемент с какими индексами (i,j) получит значение "5"?
Заранее благодарен.
Цитата:
Originally posted by elderb
С одномерным vector проиходилось работать, а при построении двумерного возникли вопросы. Может вопросы примитивные, но ответа на форуме не нашел.
Объявляю двумерный массив:
1. Одномерный вектор можно инициализировать напр
Но как тоже самое сделать для двумерного?
2. Заполнять массив можно с помощю прямого обращения v[j]=5;
А как в этом случе выполняется v.push_back(10); Элемент с какими индексами (i,j) получит значение "5"?
Заранее благодарен.
С одномерным vector проиходилось работать, а при построении двумерного возникли вопросы. Может вопросы примитивные, но ответа на форуме не нашел.
Объявляю двумерный массив:
Код:
#include <vector>
using namespace std;
vector<vector<int> > v;
using namespace std;
vector<vector<int> > v;
1. Одномерный вектор можно инициализировать напр
Код:
v.assign(10,2);
//10 элементов со значением 2
//10 элементов со значением 2
Но как тоже самое сделать для двумерного?
2. Заполнять массив можно с помощю прямого обращения v[j]=5;
А как в этом случе выполняется v.push_back(10); Элемент с какими индексами (i,j) получит значение "5"?
Заранее благодарен.
У меня вот так получилось:
Код:
vector<vector<int> > v;
vector<int> sv;
sv.push_back(45);
sv.push_back(23);
v.push_back(sv);
v[1].assign(10,2);
vector<int> sv;
sv.push_back(45);
sv.push_back(23);
v.push_back(sv);
v[1].assign(10,2);
но вообще я не сторонник таких мер, лучше бы массив указателей на массивы :-)
Кстати со строчкой v[1].assign(10,2); не уверен. v[1] ведь не инициализирован, но сработало.
Цитата:
Originally posted by elderb
1. Одномерный вектор можно инициализировать напр
Но как тоже самое сделать для двумерного?
1. Одномерный вектор можно инициализировать напр
Но как тоже самое сделать для двумерного?
Заполняем матрицу 10х10 значением 2:
vector< vector<int> > v(10, vector<int>(10, 2));
Цитата:
Originally posted by elderb
2. Заполнять массив можно с помощю прямого обращения v[j]=5;
А как в этом случе выполняется v.push_back(10);
2. Заполнять массив можно с помощю прямого обращения v[j]=5;
А как в этом случе выполняется v.push_back(10);
Так у тебя для двумерного случая не получится.
Добавляем новую "строку" длиной 10 и инициализированную (все элементы) значением 5.
v.push_back(vector<int>(10, 5));
Всем спасибо вопрос решен.