Я изучаю C++, читаю книгу Страуструпа, которая, на мой взгляд, не очень ясна в этой теме (массивы). Из того, что я понял, C++ имеет (например, Delphi) два типа массивов:Динамический и статический массив
Статические массивы, которые объявлены как
int test[3] = {10,487,-22};
динамических массивов, которые называются векторами
std::vector<int> a;
a.push_back(10);
a.push_back(487);
a.push_back(-22);
Я уже видел ответы об этом (и было много строк и понятий внутри), но они не уточнили мне эту концепцию.
Из того, что я понял vector
S потребляют больше памяти, но они могут изменить их размер (динамически, на самом деле). Массивы вместо этого имеют фиксированный размер, который задается во время компиляции.
В главе Struustrup говорится, что векторы безопасны, а массивы - нет, без объяснения причины. Я действительно доверяю ему, но почему? Является ли причина безопасности связана с расположением памяти? (heap/stack)
Я хотел бы знать, почему я использую векторы, если они в безопасности.
Это очень широкое обсуждение, если вы спрашиваете о достоинствах и подводных камнях, используя std :: vector, массивы и указатели. –
В моем коде я буду использовать векторы всегда и массивы, только если я нашел кого-то, кто использовал их в старой версии. Но я хотел бы знать, почему –
std :: vector - хорошо отточенная машина, которая взяла на себя большинство задач, ранее разрешенных с помощью массивов. Вы хотите изучить, как std :: vector разработан и почему. Это включает управление ресурсами (правило 3/5), а также алгоритмическое поведение. –