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

Ваш аккаунт

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

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

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

вектор векторов(С++)

10K
19 января 2011 года
Schuler
42 / / 04.04.2007
Можно ли создать вектор, элементами которого является другой вектор?
Или на худой конец массив векторов?

Заранее спасибо.
278
19 января 2011 года
Alexander92
1.1K / / 04.08.2008
А кто может запретить? :)

 
Код:
vector<vector<int> > A(0);
 A.resize(5);
 for (int i = 0; i < 5; i++)
  A.resize(3);
10K
19 января 2011 года
Schuler
42 / / 04.04.2007
Большое спасибо, только почему то не получается до конкретного вектора достучаться

 
Код:
vector< vector<T> > mas(n);

    for(i=begin;i<end;i++)
    {
        mas.push_back(i);
    }


Выдаёт ошибку
278
19 января 2011 года
Alexander92
1.1K / / 04.08.2008
Какую ошибку выдает? Скорее всего, дело в том, что вы не проинициализировали "вложенные" вектора.

 
Код:
vector<vector<T> > mas(n);
for (int i = 0; i < n; i++)
 mas.resize(0);
// а вот здесь пишите то, что вам нужно
10K
19 января 2011 года
Schuler
42 / / 04.04.2007
Извиняюсь, дошло, это я неправ.

Большое спасибо за ответ.
535
19 января 2011 года
Нездешний
537 / / 17.01.2008
[QUOTE=Alexander92]Какую ошибку выдает? Скорее всего, дело в том, что вы не проинициализировали "вложенные" вектора.

vector<vector<T> > mas(n);
for (int i = 0; i < n; i++)
mas.resize(0);[/QUOTE]Это не имеет смысла
278
19 января 2011 года
Alexander92
1.1K / / 04.08.2008
Цитата:

Это не имеет смысла



Это почему же? Конкретно для push_back - соглашусь, а вообще - инициализация необходима.

87
19 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: Alexander92
Это почему же?



Почитай про resize и про грамотную инициализацию std::vector. Тогда не будет вопросов.

535
19 января 2011 года
Нездешний
537 / / 17.01.2008
[QUOTE=Alexander92]а вообще - инициализация необходима[/QUOTE]Твое утверждение равнозначно следующему:
 
Код:
std::vector<some_type> v;
v.resize(0); //ты утверждаешь, что без этой строки дальше использовать объявленный вектор нельзя
Это не так. Не путай с выделением памяти для многомерных динамических массивов.
Эта строка не делает ничего. Объявленный вектор и так имеет нулевой размер
278
19 января 2011 года
Alexander92
1.1K / / 04.08.2008
Вопрос снят, уже сам сообразил, что неправ.
3
22 января 2011 года
Green
4.8K / / 20.01.2000
Цитата: Alexander92
А кто может запретить? :)

 
Код:
vector<vector<int> > A(0);
 A.resize(5);
 for (int i = 0; i < 5; i++)
  A.resize(3);


Это же, но покороче:

 
Код:
vector< vector<int> > A(5, vector<int>(3));
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог