c++ - vector 元素似乎没有连续存储

标签 c++ vector

为什么最后的预期输出与以下代码中的实际输出不同?

#include<iostream>
#include<fstream>
#include<istream>
#include<sstream>
#include<vector>

using namespace std;


int main()
{
        vector<int> v;
        for(int ii = 0; ii < 4; ii++){
            v.push_back(0);
        }

        vector<vector<int>> twoDv;

        for(int ii = 0; ii < 5; ii++){
            twoDv.push_back(v);
        }

        cout<<"Expected Output : " << &twoDv[0][0] <<'\t'<< (&twoDv[0][0] + 3) <<'\t'<< (&twoDv[0][3] + 1)<<'\n';
        cout<<"Actual Output   : " << &twoDv[0][0] <<'\t'<< &twoDv[0][3] <<'\t'<< &twoDv[1][0] << '\n';
}

最佳答案

vector< vector< int > >不是像int[5][5] 这样的二维数组.它是指向数组的指针数组。 (更准确地说,它包含一系列包含指向整数的指针的 std::vector 对象。) 只有“行”是连续的。不同的行彼此不连续,因为它们可能存储在不同的 malloc 内存块中。

关于c++ - vector 元素似乎没有连续存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341264/

相关文章:

c++ - 调用 vkEnumerateDeviceExtensionProperties "twice"- 是否需要?

C++;是否可以在子构造函数中间调用父构造函数?

c++ - 删除具有特定字符要求的字符串 vector 的元素

c++ - STD Bad Alloc 异常

R:prop.test 根据传递给它的是矩阵还是向量返回不同的值

c++ - 使用具有多态性的引用时无效的初始化

c++ - "int &&"和 "auto &&"之间的不同行为

c++ - SFML C++ 绘制到 RenderWindow 纯虚函数运行时失败

java - 枚举接口(interface)和 vector 类

c++ - 为什么指向 vector 元素的成员会导致段错误?