C++标准库提供了多种用于为容器对象指定接口的“概念”。例如,std::vector
实现了Container
,Sequence
,RandomAccessContainer
和ReversibleContainer
概念。C++连续序列概念
是否有一个概念,无论是在指定的C++ 03或C++ 11中,描述Sequence
这保证元件之间的连续存储器,使得:
static_cast<void*>(&some_sequence[N]) == static_cast<void*>(&some_sequence[0] + N)>
这将是一种有用的概念,因为它告诉你是否可以使用容器与任何需要连续内存缓冲区的函数,如std::istream::read
。
我知道的是,在实践中,仅std::vector
(我认为在std::string
C++ 11只)实际上保证底层连续的缓冲区 - 但是这保证特有std::vector
还是有其指示所定义的“概念”通用Sequence
提供连续内存的类?
'std :: array';) – Zeta 2013-03-03 17:55:54
据我所知,没有这样的概念。 'std :: vector','std :: string'和'std :: array'在[[0,c]中只有'c.data()+ i ==&c [i]'''''的不变量.size())'。 – Xeo 2013-03-03 17:56:07
@Xeo:对。没有概念,只有要求元素(或'char_type's)*“连续存储”*。 – Zeta 2013-03-03 17:57:06