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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 17:53   #1
lampo
Новичок
Джуниор
 
Регистрация: 09.05.2012
Сообщений: 7
По умолчанию allocator

Пытаюсь разобраться с чужим кодом и набрел на такую штуку:
Код:
typedef vector<CDPoint, allocator<CDPoint> > CDVector;
CDPoint - маленький класс с двумя параметрами
Код:
class CDPoint
{
public:
  double x;
  double y;
// дальше куча перегрузок операторов
Помимо этого аллокатор используется еще несколько раз. Собственно, вопрос: что представляет собой аллокатор, зачем он нужен и для чего он может использоваться в данном случае? Пытался гуглить на эту тему, но так и не осознал для какой конкретной цели и как его используют.
lampo вне форума Ответить с цитированием
Старый 11.05.2012, 18:21   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

lampo

аллокатор используется для управления памятью внутри вектора. в данном случае это похоже на код китайского программиста, которому платят за объем текста, потому что он повторил дефолтное значение этого параметра.
Rififi вне форума Ответить с цитированием
Старый 11.05.2012, 18:57   #3
lampo
Новичок
Джуниор
 
Регистрация: 09.05.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
потому что он повторил дефолтное значение этого параметра.
Можно тут немного по-подробнее? Я переделываю этот код под сишарп и не знаю что делать с такими конструкциями. Я могу вместо этого просто создать массив из CDPoint'ов без всяких аллокаторов при этом ничего особо не испортив?
lampo вне форума Ответить с цитированием
Старый 11.05.2012, 19:22   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

lampo

Можно тут немного по-подробнее?

записи

std::vector<ZZZ> и std::vector<ZZZ, std::allocator<ZZZ> > полностью эквивалентны

Я переделываю этот код под сишарп и не знаю что делать с такими конструкциями

ничего. выкидывать их и юзать шарповые: IList<CDPoint> myList = new List<CDPoint>();
Rififi вне форума Ответить с цитированием
Старый 11.05.2012, 20:24   #5
lampo
Новичок
Джуниор
 
Регистрация: 09.05.2012
Сообщений: 7
По умолчанию

Rififi

Большое спасибо)

upd: кстати, vector я заменяю на IList, template я так понял - это Generic, а чем заменять valarray? Я, например, valarray<int> заменял просто на int[], но не уверен что это правильно

upd2: пробовал CFile заменить шарповским File, дописал using System.IO.File, но почему-то компилятор этот класс не узнает

Последний раз редактировалось lampo; 11.05.2012 в 21:00.
lampo вне форума Ответить с цитированием
Старый 12.05.2012, 11:14   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
похоже на код китайского программиста, которому платят за объем текста
Индусского
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


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