Как получить указатель std ::deque на необработанные данные?

#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, он размещается в памяти не как массив, а как произвольные ячейки памяти, указывающие на предыдущий и следующий разделы памяти.