我的问题很简单:`std::vector`的元素是否保证是连续的?换句话说,我能否将指向`std::vector`第一个元素的指针用作C数组?
如果我记得没错的话,C++标准并没有做出这样的保证。然而,`std::vector`的要求几乎不可能在元素不连续的情况下满足。
有人能澄清一下吗?
示例:
如果我记得没错的话,C++标准并没有做出这样的保证。然而,`std::vector`的要求几乎不可能在元素不连续的情况下满足。
有人能澄清一下吗?
示例:
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'
}
}
values
值的调用,特别是改变其大小(例如push_back()
),可能会触发对基础向量的重新分配,从而使复制到array
中的指针无效。这背后的原理与使用 vector::iterator 而不是指向向量的指针相同。 :) - Greg D