Я много использовал std::vector
, и недавно я задал себе этот вопрос: "Как реализовано std::vector
?"
У меня было две альтернативы:
1) Связанный список, а затем делает API похожим на произвольный доступ (т.е. перегрузка operator[]
).
2) Используя new
, например. Foo* temp = new Foo[20]
: Я считаю, что они делают что-то подобное, но затем возникает еще один вопрос. Всегда ли они выделяют максимальное хранилище (uint32_t
) для предоставления произвольного доступа? (Это неэффективно с точки зрения памяти.)
Или есть что-то еще, о чем я должен знать?