向量元素保证是连续的吗?

向量元素保证是连续的吗?

我的问题很简单:STD:向量元素是否保证是连续的?按照顺序,我是否可以使用指向std:Vectoral的第一个元素的指针作为C-数组?

如果我的记忆很好的话,C+标准并没有提供这样的保证。然而,如果这些元素不是连续的,那么病媒的要求几乎是不可能满足的。

有人能澄清这一点吗?

例子:

std::vector<int> values;// ... fill up valuesif( !values.empty() ){
    int *array = &values[0];
    for( int i = 0; i < values.size(); ++i )
    {
        int v = array[i];
        // do something with 'v'
    }}


慕妹3146593
浏览 435回答 3
3回答

慕村225694

该标准实际上保证了vector在记忆中是连续的&a[0]可以传递给C函数,该函数需要一个数组。这条规则的例外是vector<bool>每只使用一位bool因此,尽管它确实具有连续内存,但它不能用作bool*(人们普遍认为这是一个错误的优化和错误)。顺便问一下,你为什么不使用迭代器呢?这就是它们的用途。
打开App,查看更多内容
随时随地看视频慕课网APP