std :: vector作为原始数组
std::vector as raw array
可以安全地获取std::vector
中的第一个元素的地址并像原始数组一样使用它?数据是否持续对齐?什么C 标准说(c++98
与c++11
)?顺便说一句,这是一种常见的做法吗?
我有一些数组,大小可能会有所不同,功能将指针和元素数量作为参数。使用std::vector
管理数据并同时将其用于my_func
。
std::vector<int> my_vector;
void my_func(int* int_ptr, int num_ints);
// ..
my_func(&my_vector[0], my_vector.size());
c 11(和此功能的C 03)保证 std::vector
中的数据是连续的。这意味着,在您的情况下,可以将&my_vector[0]
视为指向该数组和正常指针算术的零元素的指针,可用于访问其他元素。首选使用my_vector.data()
恢复指向零元素的指针。
c 98 几乎保证 it。
请注意,对于任何C 标准,std::vector<bool>
不是 true。这是因为std::vector<bool>
被实现为特定的专业化。
相关文章:
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 检查反向数组是否与原始数组相同
- 如何将数组传递给函数,以便在更改该函数中的数组值时原始数组的值不会更改?
- 如何在C++中将 std::vector 移动到原始数组中
- 头文件会导致函数调用后原始数组出现问题
- 初始化std :: unique_ptr作为原始数组指针的初始化
- 原始数组和 std::array 在 clang++ 和 VC++ 上的不同迭代器行为
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 我可以使用std ::分配的分配的原始数组
- 如何在C++的所有函数中编辑原始数组
- 如何在不改变原始数组的情况下将数组作为参数传递
- 从std::array获取对原始数组的引用
- std :: vector作为原始数组
- MaxHeaify调用产生的数字不在原始数组中
- 如何从原始数组到std::vector执行memcpy等效操作
- 原始数组是否比 std::array 有任何优势
- 如果我想从函数返回字符串列表,我应该返回原始数组还是 std::vector
- 如何在不更改原始数组的情况下对指向结构的指针数组进行排序
- 正在将指针从数组值存储到原始数组索引位置
- 如何在不知道原始数组大小的情况下增加动态数组(C++)的大小