我的问题很简单:是std::vector
保证元素是连续的?换句话说,我可以使用指向 a 的第一个元素的指针吗?std::vector
作为 C 数组?
如果我没记错的话,C++ 标准并没有做出这样的保证。但是,那std::vector
如果元素不连续,几乎不可能满足这些要求。
有人可以澄清这一点吗?
Example:
std::vector<int> values;
// ... fill up values
if( !values.empty() )
{
int *array = &values[0];
for( int i = 0; i < values.size(); ++i )
{
int v = array[i];
// do something with 'v'
}
}
C++98 标准本身遗漏了这一点,但后来作为 TR 的一部分添加了。即将推出的 C++0x 标准当然会将此作为一项要求。
来自 n2798(C++0x 草案):
23.2.6 类模板向量[向量]
1 向量是支持随机访问迭代器的序列容器。此外,它还支持(摊销)
最后的恒定时间插入和擦除操作;中间的插入和擦除需要线性时间。贮存
管理是自动处理的,但可以给出提示以提高效率。的元素
向量是连续存储的,这意味着如果 v 是一个向量,其中 T 是其他类型
大于 bool,那么对于所有 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)