std::deque作为c语言数组使用
std::vector<int> vi;
// ...
void do_something(int * p, int len);
do_something(&vi[0], vi.size);
上面这样使用没有问题。
我想请问,deque可以这样使用吗?
deque与vector组织内存的方式不一样。vector会使用一块连续的内存,
所以上面这样使用没有问题。而deque是按“页”(page)或“块”(chunk)分配存储器。
每页包含固定数目的元素。
比如一块10M字节的vector,使用的是一整块10M字节的内存。
而deque可以使用一串更小的内存块,比如10块1M的内存。
所以我觉得deque所使用的内存不连续,是不是不能像上面的vector一样,
将首元素的地址和大小传递给传统C API?
谢谢大家。 -_-