2013-05-30 4 views

ответ

2

вообще ничего, они эквивалентны.

Две вещи, хотя

1) IDs->operator[](j) менее ясно, чем (*IDs)[j].

2) Если вы можете использовать вместо const vector<double>& IDs тогда не только вы пользу от еще яснее IDs[j], но вы также получаете стабильность через тот факт, что вы не можете изменять вектор с помощью IDs.

Помните, что в один прекрасный день ваш код будет поддерживаться кем-то менее способным, чем вы, поэтому ясность важна.

+1

Это 'const' не означает« неизменность ». Не из идентификаторов, а не из вектора. –

+0

Ухаживать за Р. Мартиньо Фернандесом? Мне нравится, что вы не можете вызывать не-const-функции-члены на std :: vector, если ваш объект помечен как const. – Bathsheba

+0

http://coliru.stacked-crooked.com/view?id=93ceeeae2034b6099a70639b71cebab1-50d9cfc8a1d350e7409e81e87c2653ba –

0

Вся идея использования этого оператора заключается в том, что ваш объект может использовать [] каким-то образом, который скрывает реальную структуру данных или организацию данных внутри себя, но снаружи, предоставляет интерфейс, подобный массиву.

См., Например, оба вектора и deques реализованы совершенно по-разному и имеют лучшие характеристики для разных целей, но снаружи они оба обеспечивают [], так что пользователь чувствует, что использует динамический массив.

Итак, это не так, но это побеждает цель.

Смежные вопросы