Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2011, 01:36   #1
daunito
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 25
По умолчанию STL, vector. Добавление элементов

Доброго времени суток! У меня есть функция, получающая указатель на вектор. Нужно очистить вектор от всех элементов и добавить N нулевых. Можно ли это как-то сделать за один раз без цикла и push_back? Например как при создании нового
Код:
vector<int> *a = new vector<int>(12000);
daunito вне форума Ответить с цитированием
Старый 10.02.2011, 01:37   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

> vector<int> *a = new vector<int>(12000);

какая жесть! что мешает написать vector<int> a(12000)? А вектор лучше передавать не по указателю, а по ссылке. Вообще нефиг по указателю STL-контейнеры передавать — используй ссылки.

Короче, лучше сделать вот так:
Код:
/// Очистить вектор @p v и заполнить его @p sz элементами, равными @p c.
template<typename T> 
void refillVector(vector<T> v, vector<T>::size_type sz, T c = T())
{
    v.clear();
    v.resize(sz, c);
}
Если вызывать эту функцию без указания третьего параметра, то в случае стандартных типов (включая int) он заполнит нулями.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 10.02.2011 в 01:49.
Obey-Kun вне форума Ответить с цитированием
Старый 10.02.2011, 01:49   #3
daunito
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 25
По умолчанию

Obey-Kun, спасибо! А почему не стОит передавать указатели на контейнеры?
daunito вне форума Ответить с цитированием
Старый 10.02.2011, 02:02   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Да не знаю, не задумывался никогда. Просто так в хороших проектах не делают. Да и смотрится по-дурацки.

И создавать vector по new тоже плохо. Ну только если совсем нужно. Ибо обычно vector где создали, так и уничтожили (то есть обычно это или поле класса, или локальная переменная, третьего не дано).
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 10.02.2011, 07:39   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
Просто так в хороших проектах не делают
в хороших проектах векторы не используют =) Вместо этого обычно красно-черные деревья, графы или другие более сложные и быстрые по сортировке и поиску структуры
NiCola999 вне форума Ответить с цитированием
Старый 10.02.2011, 14:28   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Ну это ты зря. Используют те контейнеры, которые требуются. Если не нужно сортировать и искать, а дописывать надо только в конец, то vector — хороший выбор.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 11.02.2011, 04:50   #7
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

вектор сам по себе предназначается для скрытия работы с динамической памятью, поэтому и создается обычно на стеке
относительно вопроса
можно же сделать
Код:
vector<int> v(100);
///
v.clear();
v.resize(100);
alex_x_x вне форума Ответить с цитированием
Старый 11.02.2011, 05:38   #8
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Ну так я это и написал.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 11.02.2011, 15:43   #9
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

Obey-Kun, пардон
alex_x_x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавление элементов в массив nhr Помощь студентам 1 11.12.2010 16:45
[C++] Добавление элементов в дерево на основе <list> Lamarq Помощь студентам 1 17.11.2009 18:39
Cравнение элементов очереди. STL. Lazio Помощь студентам 0 11.11.2009 00:16
Добавление элементов массива в массив JOFRIF Общие вопросы C/C++ 11 04.10.2008 01:47
Добавление элементов ListView SnakeMan Помощь студентам 4 30.11.2007 11:54