Что (если что-либо) можно сделать более эффективно с помощью массива, а не контейнера?Почему я должен использовать простые массивы, а не классы контейнеров?
Недавно я узнал о стандартных классах контейнеров C++. Они имеют явные преимущества и решают общие проблемы с массивами C-стиля. В FAQ сек список на «почему массивы зла» можно резюмировать свободно, как это:
1. subscripts are not checked 2. often it is required to allocate memory from the heap 3. not easy to insert elements in the middle 4. always passed as reference
Я думаю, есть много случаев, где можно жить с этими недостатками. Тем не менее, я немного озадачен вопросом, что это может быть сделано более эффективно/проще с массивами, а не с контейнерами? Или на самом деле ничего подобного, и я действительно не должен заботиться о массивах?
Пожалуйста, просмотрите их страницу на [что означает «зло»] (http://www.parashift.com/c++-faq/defn-evil.html). TL, DR не воспринимают это слишком серьезно. (Было бы нечестно предположить, что в FAQ часто говорится, что вы никогда не используете массивы снова.) –
Учитывая C++ 11, существует 'std :: array', который AFAIK полностью заменяет массивы C-стиля. Они необходимы для реализации 'std :: array' и не могут быть удалены, поскольку это приведет к серьезному нарушению совместимости, но если вы пишете C++ 11, на самом деле нет причин использовать массивы. Конечно, ЧаВо, скорее всего, предшествует C++ 11, поэтому это хороший вопрос для C++ 98. – delnan
@remyabel да, вы правы, я отредактирую. На самом деле я подумывал о том, чтобы не упоминать о ссылках на faq (и «злую» -добавку), поскольку ее неправильно понимают и критикуют уже достаточно часто. – user463035818