如果我用这样的默认分配器创建一个 std::vector:
vector<int> myVec = vector<int>();
myVec.push_back(3);
myVec.push_back(5);
myVec.push_back(8);
vector 是否会在内部将实际数据存储到一个 int 数组中?是否可以获取指向该数组的指针并使用该指针直接对其进行迭代?
最佳答案
是的,vector 的设计让你可以做到这一点,使用 &myVec[0]
得到一个 int*
。您还可以使用 vector 的迭代器类型,其行为类似。 (指针是有效的随机访问迭代器。)您使用的是默认分配器或任何其他分配器,不会改变任何这一切,它是 vector 接口(interface)的必需部分。
vector 是 guaranteed使用连续存储。特别是从这么多结果中,检查 this one来自 Stroustrup 本人。
关于c++ - std vector + 默认分配器 + 直接数组访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1767919/