std::vector<int> v1(1000);
std::vector<std::vector<int>> v2(1000);
std::vector<std::vector<int>::const_iterator> v3(1000);
这 3 个向量的元素是如何初始化的?
关于int,我测试了一下,发现所有元素都变成0了,这是标准吗?我相信原语仍未定义。我创建了一个包含 300000000 个元素的向量,给出非零值,删除它并重新创建它,以避免操作系统内存被清除以确保数据安全。重新创建的向量的元素也为 0。
迭代器呢?默认构造函数是否有初始值 (0) 或初始值未定义?当我检查这个时,迭代器指向 0,但这可以是操作系统
当我创建一个特殊对象来跟踪构造函数时,我看到对于第一个对象,vector 运行默认构造函数,而对于所有其他对象,它运行复制构造函数。这是标准吗?
有没有办法完全避免元素的初始化?或者我必须创建自己的向量?(哦,我的上帝,我总是说不是另一个向量实现)我问是因为我使用超大稀疏矩阵进行并行处理,所以我不能使用 push_back(),当然我不想要无用的初始化,稍后我会更改价值。