#c #std
#c #std
Вопрос:
Я знаю, что для std::vector, std::vector: data() и amp;something [0] оба в порядке, как насчет std::deque? Для std::deque нет функции data().
Редактировать: если std::deque не гарантирует использование непрерывного хранилища, как мне реализовать deque, который может получать необработанные данные?
Комментарии:
1. std::deque не гарантирует использование непрерывного хранилища. Таким образом, может не быть массива необработанных данных для получения указателя.
2. «как мне реализовать deque, который может получать необработанные данные?» — Это не имеет смысла, пожалуйста, перефразируйте это.
3. Как вы думаете, зачем вам нужны «необработанные данные»? Что вы на самом деле надеетесь сделать?
4. @Jonathan Wakely Для функции (интерфейса) нужен массив
5. @user3793905, тогда вы не можете получить его из
deque
, массива нет. Либо не используйтеdeque
, либо скопируйте элементы во что-то вродеvector
Ответ №1:
Не гарантируется, что данные, содержащиеся в deque, будут помещены в непрерывный блок памяти. Это означает, что не может быть функции, подобной data() вектора.
Ответ №2:
Нет, двусторонняя очередь — это динамически растущая структура данных. В отличие от std::vector, он размещается в памяти не как массив, а как произвольные ячейки памяти, указывающие на предыдущий и следующий разделы памяти.