Форум программистов, компьютерный форум CyberForum.ru

Что за векторы и зачем они нужны - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
25.10.2011, 17:15     Что за векторы и зачем они нужны #1
Читал книгу по программированию на С++ и дошел до раздела векторы. Вот хотел у вас спросить за чем они нужны? и мне они напоминают массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.10.2011, 17:17     Что за векторы и зачем они нужны #2
Цитата Сообщение от Sylar9 Посмотреть сообщение
и мне они напоминают массивы
и правильно делают
это динамические массивы, в которых работа с памятью не ложится на программиста
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.10.2011, 17:20     Что за векторы и зачем они нужны #3
Цитата Сообщение от Sylar9 Посмотреть сообщение
и мне они напоминают массивы
Это и есть массивы, только намного более удобные.
Допустим нужно ввести неопределенное количество чисел с клавиатуры. Т.е. массив константного размере использовать не получится. В С пришлось бы постоянно довыделять память realloc'ом, у вектора же есть удобные методы, в данном случае пригодится push_back(ложит элемент в конец вектора, при этом размер вектора увеличивается на 1).
Примерно так будет выглядеть код:
C++
1
2
for ( int tmp; std:: cin >> tmp ; )
   vec.push_back(tmp);
Там еще много полезных методов вроде удаления/вставки элементов, но хочу из них выделить метод at, который выбрасывает исключение при обращении к несуществующему элементу массива.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
25.10.2011, 17:20     Что за векторы и зачем они нужны #4
Они используются, когда мы не можем точно указать размер массива. Допустим не знаем, сколько чисел потребуется записать в массив. Можно было бы взять массив с большим кол-вом эл-тов, но это нерациональное использование памяти и операции с данным массивом будут занимать уйму времени.
Если берем размер массива маленький - рискуем не записать все данные. В векторе же памяти выделяется ровно столько, сколько надо. Это словно массив с изменяемым кол-вом эл-тов.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.10.2011, 17:23     Что за векторы и зачем они нужны #5
Цитата Сообщение от MrGluck Посмотреть сообщение
В векторе же памяти выделяется ровно столько, сколько надо.
неа, больше чем надо, он блоками ее выделяет.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
25.10.2011, 17:23     Что за векторы и зачем они нужны #6
Цитата Сообщение от MrGluck Посмотреть сообщение
В векторе же памяти выделяется ровно столько, сколько надо.
С виду да, но, как правило, больше, чем надо. Но можно заранее указать, сколько именно нужно.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
25.10.2011, 17:43  [ТС]     Что за векторы и зачем они нужны #7
Цитата Сообщение от oxotnik Посмотреть сообщение
и правильно делают
это динамические массивы, в которых работа с памятью не ложится на программиста
То есть они и сеть массивы

Добавлено через 1 минуту
Цитата Сообщение от diagon Посмотреть сообщение
Это и есть массивы, только намного более удобные.
Допустим нужно ввести неопределенное количество чисел с клавиатуры. Т.е. массив константного размере использовать не получится. В С пришлось бы постоянно довыделять память realloc'ом, у вектора же есть удобные методы, в данном случае пригодится push_back(ложит элемент в конец вектора, при этом размер вектора увеличивается на 1).
Примерно так будет выглядеть код:
C++
1
2
for ( int tmp; std:: cin >> tmp ; )
   vec.push_back(tmp);
Там еще много полезных методов вроде удаления/вставки элементов, но хочу из них выделить метод at, который выбрасывает исключение при обращении к несуществующему элементу массива.
А какую библеотеку надо подключить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2011, 17:45     Что за векторы и зачем они нужны
Еще ссылки по теме:

C++ Зачем нужны сортировки
C++ Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала
C++ Зачем нужны указатели?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.10.2011, 17:45     Что за векторы и зачем они нужны #8
Цитата Сообщение от Sylar9 Посмотреть сообщение
А какую библеотеку надо подключить
Код
#include <vector>
using namespace std;
Yandex
Объявления
25.10.2011, 17:45     Что за векторы и зачем они нужны
Ответ Создать тему
Опции темы

Текущее время: 08:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru