c++ - std vector + 默认分配器 + 直接数组访问?

标签 c++ arrays vector

如果我用这样的默认分配器创建一个 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/

相关文章:

android - QT 和 Android 8.0 : Error creating SSL context () 问题

c++ - 如何在 C++ 中对某些数据结构进行父类(super class)化?

java - 如何在跟踪进位的同时获得两个数组的和(如 java 中的 bigInt)?

c++ - Boost vector insert_element 一个一个错误

c++ - 读取文件但跳过一个字符

c++ - 带参数的 Qt 翻译

Java Swing 巨大网格

c - 使用 scanf() 和 switch 语句计算字符串中的字符数

python - Keras 中的深度自动编码器将一个维度转换为另一个维度

r - 如何根据同一向量的值重复向量的索引?