Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Стандартные контейнеры


Автор: bronislav 29.5.2008, 09:55
Можно ли как-то объявить стандартный контейнер с индексацией, например от -1.

Я понимаю, что можно наследовать контейнер, а как-то по другому?

Автор: Lazin 29.5.2008, 10:05
Цитата(bronislav @  29.5.2008,  09:55 Найти цитируемый пост)
Можно ли как-то объявить стандартный контейнер с индексацией, например от -1.

Я понимаю, что можно наследовать контейнер, а как-то по другому? 

по другому никак
индексация в С++ от 0, все что иначе - не интуитивно

Автор: mes 29.5.2008, 10:09
Цитата(bronislav @  29.5.2008,  09:55 Найти цитируемый пост)
Можно ли как-то объявить стандартный контейнер с индексацией, например от -1.

интересно для чего такое могло понадобится..? скорее всего ищете не в том направлении..

Автор: bronislav 29.5.2008, 10:55
Цитата(mes @  29.5.2008,  09:09 Найти цитируемый пост)
интересно для чего такое могло понадобится..?

Переписываю код с Pascal. и Там в некоторый массивах используется индексация от -1, просто боюсь запутаться. Ну ладно буду пробовать так.
Спасибо.

Автор: Alek86 29.5.2008, 12:02
Цитата(bronislav @  29.5.2008,  10:55 Найти цитируемый пост)
 просто боюсь запутаться.

#define PASCAL_NUMBER(x) ((x)-1)

только не злоупотребляй (функции с 2 и более параметров лучше не подсовывать)

Автор: mes 29.5.2008, 12:50
Цитата(Alek86 @  29.5.2008,  12:02 Найти цитируемый пост)
#define PASCAL_NUMBER(x) ((x)-1)

только не злоупотребляй (функции с 2 и более параметров лучше не подсовывать) 


а зачем дефайн , если можно подсунуть функцию ?

inline int  ТоPascalIndex      (int x) { return x-1; }
inline int  FromPascalIndex  (int x) { return x+1; }

P.S. хотя насколько я помню по умолчанию в паскале индексы начинаются с 1, a не с  -1;
P.S.S. но я все таки остаюсь при мнении, что это не решение проблемы, а лишь обходной маневр
и если он применяется на одном малом  (логически независимом) фрагменте программы и не завязан на остальное тело проги, то решение подойдет,
однако если на это будет опираться другие части проги то могут появиться трудноотлавлимые ошибки .

также помнить об этой особенности при составлении алгоритма -  значит отвлекаться от сути по мелочам 

Автор: bronislav 29.5.2008, 13:17
Цитата(mes @  29.5.2008,  11:50 Найти цитируемый пост)
P.S. хотя насколько я помню по умолчанию в паскале индексы начинаются с 1, a не с  -1;

Там можно описать массив с какого хочешь индекса и все будет тип том
Код

sample : array[-1..N] of byte;


Цитата(mes @  29.5.2008,  11:50 Найти цитируемый пост)
P.S.S. но я все таки остаюсь при мнении, что это не решение проблемы, а лишь обходной маневр


А как иначе - только обходной маневр. Ибо перегружать стандартный контейнер я не хочу.

Автор: mes 29.5.2008, 13:26
Цитата(bronislav @  29.5.2008,  13:17 Найти цитируемый пост)
А как иначе - только обходной маневр. Ибо перегружать стандартный контейнер я не хочу. 

чтоб не перегружать контейнер, можно ИМХО  привести индексы к "стандартному" порядку

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)