Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Двумерный динамический массив на vector

1.9K
07 января 2006 года
elderb
61 / / 26.01.2004
С одномерным vector проиходилось работать, а при построении двумерного возникли вопросы. Может вопросы примитивные, но ответа на форуме не нашел.
Объявляю двумерный массив:
 
Код:
#include <vector>
using namespace std;
vector<vector<int> > v;

1. Одномерный вектор можно инициализировать напр
 
Код:
v.assign(10,2);
//10 элементов со значением 2

Но как тоже самое сделать для двумерного?

2. Заполнять массив можно с помощю прямого обращения v[j]=5;
А как в этом случе выполняется v.push_back(10); Элемент с какими индексами (i,j) получит значение "5"?
Заранее благодарен.
8.8K
08 января 2006 года
dark_king
35 / / 27.10.2005
Цитата:
Originally posted by elderb
С одномерным vector проиходилось работать, а при построении двумерного возникли вопросы. Может вопросы примитивные, но ответа на форуме не нашел.
Объявляю двумерный массив:
 
Код:
#include <vector>
using namespace std;
vector<vector<int> > v;

1. Одномерный вектор можно инициализировать напр
 
Код:
v.assign(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);

но вообще я не сторонник таких мер, лучше бы массив указателей на массивы :-)
Кстати со строчкой v[1].assign(10,2); не уверен. v[1] ведь не инициализирован, но сработало.
3
08 января 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by elderb

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);


Так у тебя для двумерного случая не получится.
Добавляем новую "строку" длиной 10 и инициализированную (все элементы) значением 5.
v.push_back(vector<int>(10, 5));

1.9K
09 января 2006 года
elderb
61 / / 26.01.2004
Всем спасибо вопрос решен.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог